索引
索引类似于字典和课本目录,是为了加快对数据的搜索速度而设立的,
有自己专门的存储空间,与表独立存放
索引的创建分为自动创建和手动创建
在创建主键跟唯一的时候,索引会自动创建
手动创建
1 -- 为EMP表的薪资列添加索引 2 CREATE INDEX INDEX_SAL ON EMP(SAL DESC); 3 4 /* 5 在用户撤销索引之前不会用到该索引的名字,但是索引在用户查询时会自动 6 起作用 7 */ 8 9 -- 为多列创建索引 10 -- 只有在同时查询SAL和NAME的时候,这个索引才会起作用 11 CREATE INDEX INDEX_SAL_NAME ON EMP(SAL, NAME); 12 13 -- 删除索引 14 DROP INDEX INDEX_SAL;
索引的缺点
1. 索引是需要单独存放的,占用空间
2.给某列添加索引后,该列的查询虽然变得更加快了,但是增、删、改会变慢,因为添加索引后,每个数据会有一个相应的位置,如果一旦往这一列里面某个位置添加了数据,那么后面的所有数据的位置都要进行改变,删除,修改亦然。
视图
视图是为了给不同的人呈现不同的数据
1 -- 创建视图 2 CREATE VIEW VI_EMP AS SELECT EMPNO, ENAME JOB, MGR FROM EMP; -- 这里只是存放了视图的定义,也就是放的是这个查询语句,在这条sql语句运行的时候动态的去检索数据的查询语句,并不是存放在视图里对应的数据 3 4 -- 查看视图 5 SELECT * FROM VI_EMP; 6 7 -- 向视图中插入一条数据 8 INSERT INTO VI_EMP VILUES(50, ‘IT‘, ‘SHANGHAI‘);
删除视图
1 DROP VIEW VI_EMP;
视图就是一个虚拟的表,视图中的数据是从事实存在的基本表中来的,当对视图进行更改时,基本表中的数据也会相应的进行更改,那么,有的时候视图只是为了给别人查看到相关的信息,并不希望查看者去更改我的表,那么可以将视图设置为只读模式
1 -- 只读 2 -- OR REPLACE 替换掉原来的VI_EMP视图 3 CREATE OR REPLACE VIEW VI_EMP 4 AS 5 SELECT * FROM EMP 6 WITH READ ONLY; -- 设置为只读 7 8 9 10 -- 查看数据库所有的视图 11 SELECT VIEW_NAME FROM USER_VIEWS;