序列:
概念:
序列是按照一定规则能自动增加/减少数字的一种数据库对象
作用:
通常可以使用序列自动地生成主键键,用于主键自增
操作:
1)创建:
语法:
CREATE SEQUENCE [schema.] sequencename
[INCREMENT BY n] --默认自增1,自增的值
[START WITH n] --序列的起始值,默认从1开始
[MAXVALUE n | NOMAXVALUE] --最大值
[MINVALUE n | NOMINVALUE] --最小值
[CYCLE | NOCYCLE] --默认NOCYCLE,
[CACHE n | NOCACHE];
2)修改:
语法:
ALTER SEQUENCE [schema.]sequencename
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
3)删除:
语法:
DROP SEQUENCE [schema.]序列名
4)查看:
语法:
SELECT 序列名 from dual;
属性:伪列
1)伪列:
1-1)CURRVAL:表示序列返回的当前值;
1-2)NEXTVAL:表示序列返回的下一个值;
2)可用语句:
序列名.currval 序列名.nextval
3)在以下情况下可以使用伪列:
3-1)select语句的select列表中,但不包括子查询中的select语句
3-2)insert语句中的子查询select列表中
3-3)insert语句的values字句中
3-4)update语句的set子句中
4)在以下情况下不能使用伪列:
4-1)在试图的select列表中
4-2)包含distinct关键字的select语句中
4-3)含有group by,having,order by子句的select语句中
4-4)select,delete,update语句的子查询中
4-5)含有default表达式的create table,alter table语句中
PS:
1)在一次查询(select语句)中,序列名.nextval只会自增一次
2)CURRVAL在被引用之前,必须先使用NEXTVAL来产生一个序列值
索引:
概念:
索引是数据库表中一个或多个列的值进行排序的一种数据库对象
作用:
在数据库中,通过索引可以加速对表的查询速度
类型:
1)单列索引:
索引建立在表中的某一列上
2)复合索引:
索引建立在表中的某几列的组合上
方式:
1)自动创建:
当有主键和唯一约束时,数据库自动创建一个索引
2)手动创建:
语法:
CREATE INDEX 索引名 ON 表名(column[, column]...);
建议命名格式:
idx_表名_列名
3)删除索引:
语法:
DROP INDEX index;
适合创建索引情况:
1)表数据量很大
2)要查询的结果集在2%-4%左右
3)经常用来做WHERE条件中的列或者多表连接的列
4)查询列的数据范围分布很广
5)查询列中包含大量的NULL值,因为空值不包含在索引中
不适合创建索引情况:
1)数据量很小的表
2)在查询中不常用来作为查询条件的列
3)频繁更新的表
4)索引列作为表达式的一部分被使用时,比如常查询的条件是SALARY*12,此时在SALARY列上创建索引是没有效果的
5)查询条件中有单行函数时,用不上索引
索引缺点:
1)占用空间
2)降低DML的操作速度
数据字典表:
1)USER_INDEXES 数据字典视图包含索引的名称及其唯一性;
2)USER_IND_COLUMNS
同义词:SYNONYM
概念:
是指数据库对象(如:表、视图、序列、存储过程等)的数据库指针
分类:
1)公有的(public):
所有的数据库方案都可以引用他们
2)私有的(private):
是在指定的方案中创建的,并且只允许拥有它的方案访问
创建:
语法:
CREATE [PUBLIC] SYNONYM 同义词 FOR [schema.] 表名
删除:
DROP SYNONYM 同义词;
PS:
只有管理员权限才可以创建和删除public权限的同义词
同义词优点:
1)可以简化对数据库对象的访问
2)方便对其他用户表的访问
3)简化过长的对象名称
4)节省大量的数据库空间,不同用户的操作同一张表没有多少差别
5)扩展数据库的使用范围,能够在不同的数据库用户之间实现无缝交互
6)同义词可以创建在不同数据库服务器上,通过网络实现连接