一、序列sequence
作用:用来产生主键的值,保证主键的唯一性创建序列:create sequence 序列名; -- 序列名一般是"表名_主键名"形式,如,create sequence test_id;
使用序列:insert into 表名 values(序列.nextval,序列.currval);如,insert into test values(test_id.nextval,'test'||test_id.currval);
删除序列:drop sequence 序列名;如,drop sequence test_id;
二、索引index
作用:用来加速查询,底层用的树机构,本质是用空间和时间换取时间创建索引:create index 索引名 on 表名(字段名);如,create index test_index on test(id); --在test表中的id字段上创建索引
使用索引:不必显式使用,加速了select的查询速度
删除索引:drop index 索引名;如,drop index test_index;
三、视图view
作用:视图的本质就是一条sql语句,是用对一份物理数据的不同表现创建视图:create or replace view 视图名 as sql语句;如,create or replace view myview as select * from test where id<100;
使用视图:select 字段 from 视图名;如,select * from myview;等价于select * from (select * from test where id<100);
删除视图:drop view myview;
四、分页rownum
把s_emp中的第一页中的数据显示出来,每页显示5条:select rownum,name,salary from s_emp where rownum<11;把s_emp中的第二页中的数据显示出来,每页显示5条:select r,name,salary from (select rownum r,name,salary from s_emp where rownum<11) where r>5;
按照工资排序,显示第二页数据,每页显示5条:select r,id,name,salaryfrom (select rownum r,id,name,salary from (select * from s_emp order by salary) where rownum<2*5+1) where r>(2-1)*5;