oracle数据库SQL开发之序列,索引,同义词
一、序列
– 序列是按照一定规则能自动增加/减少数字的一种数据库对象。
– 通常可以使用序列自动地生成主键值。
(一)创建序列
例:创建序列test_seq,起始值为10,每次增长2,最大值100,最小值9,循环序列,每次缓存10
create sequwnce te77st_seq
start with 10 -- 序列从10 开始
increment by 2 -- 序列每次增加2
maxvalue 100 -- 序列最大值100
minvalue 9 -- 序列最小值9
cycle -- 序列循环, 每次增加2, 一直到100 后回到9 从新开始
cache 10 ; -- 缓存中序列值个数为10
(二)序列属性
• nextval和currval伪列 必须先执行有nextval语句的sql语句,使序列动起来
– currval:表示序列返回的当前值;
– nextval:表示序列返回的下一个值;
– currval在被引用之前,必须先使用nextval来产生一个序列值;
– 可用语句 序列名.currval或 序列名.nextval来访问序列;
(三)序列的使用
– 创建序列student_seq:
create sequence student_seq
start with 1
increment by 1;
– 使用序列student_seq生成student表中sid列插入值:(作用体现在这里)
insert into student
values (student_seq.nextval, 'Scott', 'Computer Science', 11);
(四)序列的修改
– 正确修改
alter sequence test_seq
increment by 4 --序列每次增加4
maxvalue 1000 -- 序列最大值1000 (注意原始序列的最大值);
nocache ; -- 不设定缓存
rowid
– 是一个伪列,系统自动产生。
– rowid能唯一标示每一条数据库行记录的物理地址,通过
– rowid 能快速定位到一条行记录。– 快速定位记录,使用rowid检索及操作数据,效率最快
二、索引
索引( index) • 建议索引命名格式:idx_tablename_columnname
– 是对数据库表中一个或多个列的值进行排序的一种数据库对象。
– 在数据库中,通过索引可以加速对表的查询速度;
(一)索引的分类
1…单列索引:
– 索引建立在表中的某一列上。
2.复合索引:
– 索引建立在表中某几列的组合上
(二)索引的创建
1.自动创建:当有primary key 或者 unique 约束时,会自动创建;
2.手动创建:
-在emp表的ename字段上创建索引.
SQL>create index idx_emp_ename on emp (ename);
-在emp表的deptno和job的组合上创建索引
SQL>create index idx_emp_deptnojob on emp (deptno,job);
(三)索引的缺点-----占用空间,降低DML的操作速度
(四)删除索引 drop index idx_tablename_columnname
三、同义词
– 同义词( synonym ) 是指向数据库对象(如:表、视图、序列、存储过程等)的数据库指针。
-创建employees表的别名。
create (public/private) s_emp
for hr.employees;
-删除同义词 – 只有数据库管理员才拥有公有同义词的创建和删除权限。
drop synonym s_emp;