Oracle学习(四)SQL高级--表优化相关(序列、视图等)
INDEX(索引)
- 可以在表中创建索引,以便更加快速高效地查询数据。
- 用户无法看到索引,它们只能被用来加速搜索/查询。
PS:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
索引新增: --在表上创建一个简单的索引。允许使用重复的值
CREATE INDEX 索引名
ON 表 (列) --在表上创建一个唯一的索引。不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。
CREATE UNIQUE INDEX 索引名
ON 表 (列) --若希望索引不止一个列(联合索引),可以在括号中列出这些列的名称用逗号隔开
CREATE INDEX 索引名
ON 表 (列1, 列2) 索引查询: --查询某个表的索引
SELECT * FROM USER_INDEXES WHERE TABLE_NAME=UPPER('表名'); --根据“索引名”查询索引的字段
SELECT * FROM USER_IND_COLUMNS WHERE INDEX_NAME=('索引名'); --根据“索引名”查询创建的索引(PS:第一个参数INDEX是固定写法)
SELECT DBMS_METADATA.GET_DDL('INDEX','索引名') FROM DUAL ;
DROP(撤销/删除)
--删索引
DROP INDEX 索引名 --删表(表结构也删)
DROP TABLE 表
--删表(只删数据)
TRUNCATE TABLE 表 --删库(这个有点刺激哈,别乱整~)
DROP DATABASE 数据库名称
ALTER(增、删、改)
--增加一列
ALTER TABLE 表
ADD 列 数据类型 --删除一列
ALTER TABLE 表
DROP COLUMN 列 --改列的数据类型(Oracle 10G 以后的版本可以省略COLUMN关键字)
ALTER TABLE 表
MODIFY COLUMN 列 数据类型
AUTO INCREMENT(自增)
- Auto increment 会在新记录插入表中时生成一个唯一的数字,可以利用这一特性自动生成主键序列号。
- 在 Oracle 中,必须通过 sequence 对象(该对象生成数字序列)创建 auto-increment 字段。
--创建序列
CREATE SEQUENCE 序列名
MINVALUE 1--最小值
START WITH 1--1为起始
INCREMENT BY 1--以1为递增量
CACHE 10--缓存10个值 --调用nextval函数自增
INSERT INTO 表 (ID,列2,列3)
VALUES (序列名.nextval,值2,值3)
VIEWS(视图)
- 视图是基于 SQL 语句的结果集的可视化的表。
- 视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
- 可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。
视图的作用:
- 视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。
- 视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)
- 从而加强了安全性,使用户只能看到视图所显示的数据。
- 视图还可以被嵌套,一个视图中可以嵌套另一个视图。
--创建视图
CREATE VIEW 视图名称 AS 查询语句 --更新视图
CREATE OR REPLACE VIEW 视图名称 AS 查询语句 --撤销视图
DROP VIEW 视图名称
Oracle学习(四)SQL高级--表优化相关(序列、视图等)的更多相关文章
- Oracle学习(二)SQL高级--表数据相关
SQL高级语句 top / limit / rownum / percent (前XXX条数据) --top(SQL Server / MS Access) select top 条数 from 表; ...
- Oracle学习(三)SQL高级--表结构相关(建表、约束)
一.建表语句 CREATE DATABASE(创建数据库) --创建数据库 create database 数据库名字; CREATE TABLE(创建表) --创建表 CREATE TABLE 表名 ...
- oracle学习 四(持续更新中)无法为表空间 MAXDATA 中的段创建 INITIAL 区
解决建立表的时候出现的 ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区 出现这个问题是因为表空间的大小不足,可以给他扩容这样的话也会多出来一个数据文件.具体写法如下 ...
- oracle/ms sql 系统表
sql server系统表详细说明 sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures主数据库 配置选项 syscurco ...
- Oracle数据库的sql语句性能优化
在应用系统开发初期,由于开发数据库数据比较少,对于查询sql语句,复杂试图的编写等体会不出sql语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目 ...
- oracle学习 十 数据库的语句优化(持续更)
平时关注Oracle数据库的网友都知道,Oracle性能优化保证了Oracle数据库的健壮性.下面就此提出需要注意的两个原则. 原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的 ...
- MySQL 学习四 SQL优化
MySQL逻辑架构: 第一层:客户端层,连接处理,授权认证,安全等功能. 第二层:核心层,查询解析,分析,优化,缓存,内置函数(时间,数学,加密),存储过程,触发器,视图 第三层:存储引擎.负 ...
- MS SQL SERVER索引优化相关查询
查找缺失索引 -- ============================================= -- Description: 查询当前数据库中缺失的索引,知道你进行优化的 ...
- Oracle language types(语言种类) 表的相关操作 DDL数据定义语言
数据定义语言 Data Definition Language Statements(DDL)数据操纵语言 Data Manipulation Language(DML) Statements事务控制 ...
随机推荐
- CSP-J2019 把8个同样的球放在同样的5个袋子里,允许有的袋子空着不放,问共有多少种不同的分法?
把8个同样的球放在同样的5个袋子里,允许有的袋子空着不放,问共有多少种不同的分法? 提示:如果8个球都放在一个袋子里,无论是放哪个袋子,都只算同一种分法. 解析: 把问题合成,先思索5个袋子都不空的状 ...
- Golang中使用set
两种 go 实现 set 的思路, 分别是 map 和 bitset. map 的 key 肯定是唯一的,而这恰好与 set 的特性一致,天然保证 set 中成员的唯一性.而且通过 map 实现 se ...
- git 生成并添加 SSH key
git config --global user.name "wangjunqiang" git config --global user.email "wangjunq ...
- HM16.0之帧内模式——xCheckRDCostIntra()函数
参考:https://blog.csdn.net/nb_vol_1/article/category/6179825/1? 1.源代码: Void TEncCu::xCheckRDCostIntra( ...
- Shell编程—正则表达式
1什么是正则表达式 1.1定义 正则表达式是你所定义的模式模板,Linux工具可以用它来过滤文本.Linux 工具(比如sed编辑器或gawk程序)能够在处理数据时使用正则表达式对数据进行模式匹配. ...
- url_for函数——快速寻找url
我们已经知道,知道了url就可以找到对应的视图函数,那么现在问题来了,如果我们知道了视图函数,要怎么找到url呢?这时候我们就需要url_for函数了. # coding: utf-8from fla ...
- 期望概率DP
期望概率DP 1419: Red is good Description 桌面上有\(R\)张红牌和\(B\)张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付 ...
- GreateMan_开源
oschina: https://www.oschina.net/ Tencent: https://github.com/Tencent 360: https://github.com/Qihoo3 ...
- Spring JPA 定义查询方法
Spring JPA 定义查询方法 翻译:Defining Query Methods 存储库代理有两种方式基于方法名派生特定域的查询方式: 直接从方法名派生查询 自定义查询方式 可用选项基于 ...
- JDK15就要来了,你却还不知道JDK8的新特性!
微信搜「烟雨星空」,白嫖更多好文. 现在 Oracle 官方每隔半年就会出一个 JDK 新版本.按时间来算的话,这个月就要出 JDK15 了.然而,大部分公司还是在使用 JDK7 和 8 . 之前去我 ...