一、索引
索引:它和书籍目录一样,是为整张表的某一列建一个类似于书籍目录。当我们把索引字段作为查询条件时,会提高查询效率。
缺点:如果表中数据增、删、改比较多的时候,会影响增删改的效率。一般索引用在数据比较大而且数据很少做增删改的地方。
创建索引语法: create index 索引名称 on 表名(列名,列名,.....)
例: create index sc_index on (sno);
注意:不要在索引上作任何操作(不能对索引列进行+、-、*、/,以及一些函数操作),如果你在索引列上加上了其他任何操作,这个查询就不会用到索引。
where sal/2 >1000 就不会走索引,改为 where sal>1000*2;
二、视图
视图:它在数据库里相当于一张虚拟的表,这个表是不存在的。如果我们经常查询一些数据,查询sql语句比较复杂,频率较高,这时候可以考虑创建一个视图。
语法:create or replace view 视图名 【("别名1","别名2",......"别名")】 as 查询语句
例 :create or replace view sc_view ("学号","课程号","分数") as select * from sc;
注:【】内的别名可以省略,别名的顺序和个数要和查询语句的结果相对应
删除视图:drop view 视图名
三、同义词
语法:create synonym 同义词名称 for 对象
比如给student表定义一个同义词:
create synonym 学生表 for student;
同义词定义后用法和表一样 :select * from 学生表;相当于select *from student ;
四、序列
序列一般用来生成表的主键值
语法:create sequence 序列名
start with 初始值
increment by 成长值
[maxvalue n|nomaxvalue]
[minvalue n]
[cache n |nocache]
[cycle | nocycle] ; []内的内容可以省略
解析:create sequence:创建序列关键字
start with :后面跟序列初始值,意思是序列开始值
increment by :序列每次增加的数,后面跟整数
maxvalue:序列的最大值
minvalue:序列的最小值
cache:每次缓存多少个值,后面跟正整数
cycle:它表示如果序列值到最大值时,它会继续生成序列号,nocycle到最大值后不会再生成序列号
修改序列:alert sequence 序列名 start with 修改值
currval:序列的当前值
select seq.currval from dual;
nextval:序列的下一个值,序列会自动增加
select seq.nextval from dual;