配色: 字号:
第11节-其它数据库对象(序列、索引、同义词)
2017-05-16 | 阅:  转:  |  分享 
  
序列(SEQUENCE)、索引(index)、同义词(synoym)一.创建、维护和使用序列什么是序列?序列:可供多个用户用来产生唯一数值
的数据库对象自动提供唯一的数值共享对象主要用于提供主键值将序列值装入内存可以提高访问效率CREATESEQUENCE语句定义序
列:CREATESEQUENCEsequence[INCREMENTBYn]--每次增长的数值[STARTWIT
Hn]--从哪个值开始[{MAXVALUEn|NOMAXVALUE}]最大值[{MINVALUEn|N
OMINVALUE}]最小值[{CYCLE|NOCYCLE}]--是否需要循环[{CACHEn|NOCA
CHE}];--是否缓存登录创建序列创建序列DEPT_DEPTID_SEQ为表DEPARTMENTS提供主键不使用CY
CLE选项例:CREATESEQUENCEdept_deptid_seqINCREMENTBY10STARTWIT
H120MAXVALUE9999NOCACHENOCYCLE;使用序列向表dept01中插入数据insertinto
dept01values(dept_id_seq.nextval,''Account'')附:createtabledeptas
selectdepartment_idid,department_namenamefromdepartmentswhe
re1=2NEXTVAL(下一个值)和CURRVAL(当前值)伪列NEXTVAL返回序列中下一个有效的值,任何用户都可以
引用CURRVAL中存放序列的当前值NEXTVAL应在CURRVAL之前指定,否则会报CURRVAL尚未在此会话中定
义的错误。例:selectempseq.nextvalfromdual;Selectempseq.currvalfro
mdual;使用序列序列在下列情况下出现裂缝:回滚系统异常多个表同时使用同一序列如果不将序列的值装入内存(NOCACHE),可
使用表USER_SEQUENCES查看序列当前的有效值修改序列修改序列的增量,最大值,最小值,循环选项,或是否装入内存
例:ALTERSEQUENCEempseqINCREMENTBY20MAXVALUE999999NOCACHEN
OCYCLE;修改序列的注意事项必须是序列的拥有者或对序列有ALTER权限只有将来的序列值会被改变改变序列的初始值只能通过删除
序列之后重建序列的方法实现创建和维护索引一种独立于表的模式对象,可以存储在与表不同的磁盘或表空间中索引被删除或损坏,不会对表产
生影响,其影响的只是查询的速度索引一旦建立,Oracle管理系统会对其进行自动维护,而且由Oracle管理系统决定何时
使用索引。用户不用在查询语句中指定使用哪个索引在删除一个表时,所有基于该表的索引会自动被删除通过指针加速Oracle服务器的查
询速度通过快速定位数据的方法,减少磁盘I/O什么时候创建索引以下情况可以创建索引:列中数据值分布范围很广列经常在WHERE子
句或连接条件中出现表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%什么时候不要创建索引下列情况不要创建索引:表很
小列不经常作为连接条件或出现在WHERE子句中查询的数据大于2%到4%表经常更新创建索引自动创建:在定义PRIMARYKEY
或UNIQUE约束后系统自动在相应的列上创建唯一性索引手动创建:用户可以在其它列上创建非唯一的索引,以加速查询在一个或多个
列上创建索引CREATEINDEXindexONtable(column[,column]...);例:在表EMPLO
YEES的列LAST_NAME上创建索引CREATEINDEXemp_last_name_idx索引名ONemploy
ees(last_name);查询索引可以使用数据字典视图USER_INDEXES和USER_IND_COLUMNS查看索
引的信息删除索引用DROPINDEX命令删除索引DROPINDEX索引名;只有索引的拥有者或拥有DROPANYINDE
X权限的用户才可以删除索引删除操作是不可回滚的三.创建同义词使用同义词访问相同的对象:方便访问其它用户的对象缩短对象名字的长度例
:CREATESYNONYMeFORemployees;创建后再次查询employees表selectfrome删除同义词DROPSYNONYMe;
献花(0)
+1
(本文系胡小哈526首藏)