Oracle数据库学习笔记之索引,序列及同义词

来源:互联网 发布:机房网络搭建 编辑:程序博客网 时间:2024/04/28 01:13
索引(index):--加快数据的查找而创建的数据库对象也叫数据库模式对象
可以为某些频繁出现在select中的条件创建索引


创建索引(索引的创建与删除不需要权限)
语法:
create index 索引名 on 表名(字段名);


create index i_name on emp(ename);
select * from emp where ename like '%S%';用到上面的索引(不用显示的调用,数据库自动引用)


create index i_name_and_job on emp(ename,job);
select * from emp where ename='SCOTT' or job='MANAGER'; --能用到上面创建的索引
select * from emp where ename='SCOTT';  --不会用到上面创建的索引


数据库会为主键约束和唯一约束自动创建索引称之为唯一索引
create unique index 索引名 on 表名(字段名);
create unique index i_bname on book(bname);


设置索引原则:
1.大表
2.频繁被使用的字段


删除索引:
drop index 索引名;


序列(sequence):
是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型)。主要用途是为表生成主键值
创建序列需要create sequence权限
语法
create sequence 序列名 
[start with n] --以n开始生成,默认值是1
[increment by n] --每次增长n,默认值是1
[{maxvalue n|nomaxvalue}] --有无有最大值n,系统能生成的最大值(10^27)
[{minvalue n|nominvalue}] --有无有最小值n,系统能生成的最小值(-10^27,默认值是1
[{cache n|nocache}] --有无缓冲n,默认是20
[{cycle n|nocycle}] --是否循环,默认不循环


创建一个序列
create sequence seq_test
strat with 2
increment by 2
maxvalue 99999
nochache 
nocycle








序列的使用:
current value
1.currval 获取当前序列的值
用法:序列名.currval


2.nexval 获取下一个序列的值
用法:序列名.nextval


select seq_test.nextval from dual;--2
select seq_test.nextval from dual;--4
select seq_test.currval from dual;--4
注意:当序列创建完毕一定要先获取下一个值,才能获取当前值


insert into book(bid,bname) values(seq_1.nextval,'第一本');
insert into book(bid,bname) values(seq_1.nextval,'第二本');


删除序列:
drop sequence 序列名;
删除序列需要是当前序列的创建者,或具有drop any sequence权限


序列的修改:
alter sequence 序列名 
[increment by n] --每次增长n,默认值是1
[{maxvalue n|nomaxvalue}] --有无有最大值n,系统能生成的最大值(10^27)
[{minvalue n|nominvalue}] --有无有最小值n,系统能生成的最小值(-10^27,默认值是1
[{cache n|nocache}] --有无缓冲n,默认是20
[{cycle n|nocycle}] --是否循环,默认不循环


注意:不能修改初始值
alter sequence seq_test increment by 5;


查看序列的数据字典user_sequences








同义词(synonym):--为数据库模式对象起的别名
创建同义词需要create synonym 系统权限


同义词的种类:
公有同义词:public synonym 
私有同义词:synonym 当前同义词的拥有者或当前同义词的拥有者授权个某个用户


语法:
create [public] synonym 同义词名 
for [账户名.]对象名;


create synonym syn_emp for emp;
select * from syn_emp;


删除同义词:
drop synonym 同义词名;
删除同义词需要是当前同义词的拥有者或具有drop any sysnonym系统权限


user_synonyms--同义词数据字典
阅读全文
0 0
原创粉丝点击