一、序列:
序列:Sequence
1、创建序列:
(1)、语句:
create sequence empseq
increment by 10 --每次增长10
start with 10 --从10开始增长
maxvalue 100 --提供的最大值
cycle --需要循环
nocache --不需要缓存登录
(2)、查询:
select empseq.nextval from dual
或
select empseq.currtval from dual
2、添加时用到序列:
(1)、创建序列:
create sequence empseq
increment by 10 --每次增长10
start with 10 --从10开始增长
maxvalue 100 --提供的最大值
cycle --需要循环
nocache --不需要缓存登录
(2)、添加数据:
insert into emp01
values(empseq.nextval,'DD',2500)
3、序列的修改:
alter sequence empseq –修改序列
increment by 1 --(每次增加1)
nocycle --(不循环)
4、序列的裂缝问题:
(1)、描述:创建两个表emp01和emp02,emp01使用empseq序列进行插入数据,1-2-3-4-60;此时emp02又开始用empseq序列插入数据,只能从61开始,62-63-64,如果在这个时候又是emp01使用empseq序列它插入的数据就只能从65开始………
(2)、解决方法:一个表一个序列。
5、使用时,一定一个表对应一个序列;不要多表共用一个。
6、如果不将序列的值装入内存(NOCACHE), 可使用表USER_SEQUENCES 查看序列当前的有效值
7、删除序列:drop sequence empseq
二、索引(index):
相当于字典前边的索引,它的存在只是加快查询的速度。
1、创建索引:
(1)、自己创建一个表,加上主键,加上唯一性约束,也会自动创建一个索引。
(2)、手动创建索引:
索引作用在emp01中的employee_id上。
create index emp01_id_index -- emp01_id_index为索引的别名。
on emp01(employee_id)
2、删除索引:drop emp01_id_index;
3、
三、同义词:
1、
create synonym e for employees
ORA-01031: 权限不足
需要在Oracle 11g的”企业管理器”中的系统权限增加CREATE ANY SYNONYM。
总结: what -- why -- how
表table
视图view
序列sequence
索引index
同义词synonym
四、测验题一:
65. 创建序列:
1).
create sequence hs
increment by 10
start with 10
2). NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效
66. 序列通常用来生成主键:
INSERT INTO emp2 VALUES (emp2_seq.nextval, 'xx', ...)
五、测验题二:
1、创建序列dept_id_seq,开始值为200,每次增长10,最大值为10000
create sequence dept_id_seq
start with 200
increment by 10
maxvalue 10000
2、使用序列向表dept中插入数据
insert into dept01
values(dept_id_seq.nextval,'Account')
附:
create table dept as
select department_id id,department_name name
from departments
where 1=2