视图(view):
1:视图是一种虚表。
2:视图是建立在已有的表基础上的,称已有的表为基表。
3:视图是呈现基表数据给用户的另外一种表现形式。
视图分为简单视图和复杂视图
简单视图:基于基表建立视图时,没有使用分组函数(group by .....)
复杂视图:基于基表建立视图时,使用了分组函数(group by .....)
注:对于简单视图,用户可通过对视图数据进行增删改来对基表数据进行增删改,即,用户改变视图数据时基表的数据也发生了该表。而对于复杂视图,用户不能对数据增删改。
基于已有表创建视图:
create or replace view 视图名
as
select 字段1,字段2,.........from 表名
with read only
如果加上:with read only 则表明用户对视图操作的权限只能读,不能对视图进行增删改
删除视图:
drop view 视图名
序列(sequence):供用户来产生唯一值的数据库对象,主要用于提供主键
创建序列语句:
create sequence 序列名
increment by n --每次增长的数值
start with n --序列值开始的位置
[maxvalue n|nomaxvalue] --序列的最大值
[minvalue n|nominvalue ] --序列的最小值
[cycle|nocycle] --序列是否循环
[cache|nocache]; --序列是否缓存登录
例如:
create sequence seqemp1
increment by 1
start with 1
maxvalue 999
minvalue 1
nocycle
nocache
插入数据:
insert into emp2 values(seqemp.nextval,'aa',1500.00)
insert into emp2 values(seqemp.nextval,'bb',2500.00)
insert into emp2 values(seqemp.nextval,'cc',3500.00)
插入结果:
EMPNO ENAME SAL
----- ---------
--------
1 aa 1500.00
2 bb
2500.00
3 cc
3500.00
修改序列:
alter sequence 序列名
increment by n
............
删除序列:
drop sequence 序列名
select 序列名.currval from dual; 能够查看当前序列值
select 序列名.nextval from dual; 能够查看到下一个序列的值
序列裂缝:就是在一个表中出现序列值不连续了,在两个数据之间出现的序列不是按照定义的序列方式变化。
例如下面的情况就是出现裂缝情况
EMPNO ENAME SAL
----- --------- --------
1 aa 1500.00
2 bb 2500.00
3 cc 3500.00
5 dd 4500.00
出现裂缝的情况:
(1)回滚 (2)系统异常 (3)多个表使用同一个序列
索引(index):能提高查询的效率
创建索引语句:
create index 索引名 on 表名(index_column)
例如:create index emp_empno on emp2(empno)
删除索引:
drop index 索引名
同义词(synonym):缩短对象的名字,方便使用对象
创建同义词:
create synonym 同义词名 for 对象
例如:create synonym e for employees
删除同义词:
drop sysnonym 同义词名