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 视图名称