第五节课: 序列
--序列
select cid from clazz order by cid
insert into clazz values(4,'402班级','老师最污的班');
insert into clazz values(10,'402班级','老师最污的班');
--问题1:如果数据量比较大,插入新的数据的时候id怎么选取才能避免重复?
使用序列
1、创建序列 create sequence 序列名
特点:默认没有初始值的,nextval的值默认从1开始,默认每次自增+1
特点:可以使用 序列名.nextval坐为主键使用
create sequence cnum;
select cnum.currval from dual---获取当前序列值
select cnum.nextval from dual---序列自增后返回当前值
truncate table clazz
select * from clazz
insert into clazz values(cnum.nextval,'402班级','老师最污的班');--将序列作为主键
问题2:如果当前表中已有很多数据,但是接下来需要使用序列进行主键自增?
创建序列时指定序列初始值及步长
create sequence cc
start with 90---设定序列初始值
increment by 5---设定步长
insert into clazz values(cc.nextval,'402班级','老师最污的班');
select max(cid) from clazz
--
select cc.nextval from dual
select cc.currval from dual
select * from clazz
删除序列
drop sequence cc
----------------完整的序列格式-----------------------------------
create sequence aa--序列名
start with 20 --设置序列初始值
increment by 10 --设置步长
maxvalue 10000---设置最大值
cache 10 -----设置缓存
第六节课:索引
索引学习
select * from emp order by sal
select * from emp where sal=3000
问题:当表中数据量比较大的时候,使用条件查询就会出现效率的问题
使用索引进行解决
1、原理:类似于java中数组的折半查找,在数据库中数据使用B树形结构进行数据的存储,
--这样可以对外提供快速的数据查找方式。
2、创建索引 create index 表名_index_字段名 on 表名(字段名)
特点:显示的创建,隐式的执行.在数据中会给主键默认创建索引。
create index emp_index_sal on emp(sal)--创建查询索引
select * from emp where sal=3000
select * from emp order by sal
create index emp_index_sal_desc on emp(sal desc);--创建单排序索引
select * from emp order by sal,job
create index emp_index_sal_desc2 on emp(sal desc,job asc);--创建多条件排序索引
3、删除索引 drop index 索引名
drop index emp_index_sal_desc