Oracle序列、索引

第五节课:	序列
					--序列
						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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值