序列:可供多个用户来产生唯一数值的数据库对象集合
自动提供唯一数值
共享对象
主要用于主键自增
将序列值装入内存可以提高访问效率
创建:
CREATE SEQUENCE sequence
increment by n
start with n
maxvalue n | nomaxvalue
minvalue n | no maxvalue
cycle | nocycle
cache | nocache
查询序列:
查询数据字典视图 USER_SEQUENCES 获取序列定义信息
SELECT sequence_name, min_value, max_value,
increment_by, last_number
FROM user_sequences;
注意:如果指定NOCACHE 选项,则列LAST_NUMBER 显示序列中下一个有效的值
获取序列下一个有效值:sequence_name.nextval
获取存放序列的当前值:sequence_currval
NEXTVAL 应在 CURRVAL 之前指定,否则会报错。
序列在一下情况会出现裂缝:
1.回滚
2.系统异常
3.多表同时使用一个序列
修改序列:
ALTER SEQUENCE sequence
increment by n
maxvalue n | nomaxvalue
minvalue n | no maxvalue
cycle | nocycle
cache | nocache
注意没有start with
删除序列:
DROP sequence sequence_name
概念:
1.一种独立于表的模式对象,可以存储在与表不同的磁盘或其他表空间中
2.索引被损坏或删除,不会对表造成影响,只影响查询速度
3.索引一旦建立,Oracle会对其进行自动维护,由Oracle来决定何时使用索引,用户无法指定
4.删除一个表时,会自动将基于该表的索引删除
5.通过指针加速Oracle服务器的查询速度
创建索引:
自动创建:在定义primary key 和unique约束后会自动的在相应的列后创建唯一性索引
手动创建:
CREATE INDEX index
什么时候创建索引:
列中数据值分布范围很广
列经常在 WHERE 子句或连接条件中出现
表经常被访问而且数据量很大 ,访问的数据大概占数据总量的2%到4%
什么时候不要创建索引:
表很小
列不经常作为连接条件或出现在WHERE子句中
查询的数据大于2%到4%
表经常更新
需要注意的是:创建索引一个是也占一定的资源,二一个使用索引的时候会加快查询速度,相应的插入速度就慢了,因为还要维护索引
查询索引:使用数据字典视图user_indexs,user_ind_columns查看索引信息
SELECT ic.index_name, ic.column_name,
ic.column_position col_pos,ix.uniqueness
FROM user_indexes ix, user_ind_columns ic
WHERE ic.index_name = ix.index_name
删除索引:
DROP INDEX index_name;
使用同义词访问相同的对象
缩短对象名字的长度
创建同义词:
CREATE SYNONYM synonym_name
FOR object
删除同义词:
DROP SYNONYM synonym_name
说明一下,到此为止,基本的Oracle知识已经学完,关于存储过程和触发器会在后续的学习中逐渐掌握,接下来会学习jdbc的知识,关于Oracle的总结,会在近期来完成,Oracle的练习也需要多做,主要是子查询,当然我认为总结也是非常重要的,学习是一方面,但是总结才是提升的时候,当把所有知识都熟记于心的时候,你就学会了这里知识,否则你只是学过了这些知识,程序这件事,得多练多总结。相信我自己,可以的。自勉。
原文地址:http://blog.csdn.net/sloverpeng/article/details/44047191