数据库对象
table:基本的数据存储集合,有行和列组成
view:从一张表或者多张表中抽出的逻辑上相关的数据集合
sequence:生成规律的数值
index:提高查询性能
synonym:给对象气的别名
简单试图和复杂视图
创建视图
创建和查询
create view x
as select empno,ename, deptno,hiredate
from cp_emp
where deptno=10;
create view v_emp2
as select empno,ename, deptno,hiredate
from cp_emp
where deptno=20;
select * from v_emp2;
修改视图
使用create or replace view子句修改empvu80视图。为每一列都增加别名
create or replace view v_emp_max_sal
as select avg(sal) a_sal, deptno
from emp
group by deptno;
在create or replace view子句中列出来的别名要与子查询中个列相对应
删除视图
drop view v_emp2;
序列
1、自动提供唯一的数值
2、共享对象
3、主要用于提供主键值
4、可代替应用程序生成序号
5、将序列值缓存到内存中,可以提高访问效率
create sequence语句:语法
定义一个序列自动生成连续的数字:
create sequence sequence
[increment by n] 每次增加的值
[start with n] 整列开始值
[{maxvalue n | nomaxvalue}] 最大值
[{minvalue n | nomincalue}] 循环开始的起始值
[{cycle | nocycle }] 循环
[{cache n | nocache}]; 缓存多少个值,存在断号的情况
创建序列
创建序列dept——deptid——seq 为表departments提供主键
不是用cycle选项
create sequence seq_d
increment by 10
start with 120
maxvalue 200
nocache
nocycle;
nextval和currval伪列
1、nextval 返回下一个可用的序列值,他返回一个唯一的值每次引用他的时候,任何用户都可以引用他。
2、currval得到当前的序列值
3、使用currval之前必须发出nextval。
使用序列
插入一个新的部门为“support”位置ID为2500
序列dept_deptid_seq显示当前值和下一个值
select seq_d.nextval from dual;
select seq_d.currval from dual;
缓存序列值
1、将序列值缓存到内存中,可提高访问效率
2、序列在下列情况下出现“断号”:
–发生回滚
–系统崩溃
–序列用于其他的表
修改序列
alter sequence seq_d
increment by 20
maxvalue 200
nocache
nocycle;
修改序列的注意事项
1、必须是序列的拥有者或者对序列有alter权限
2、只有将来的序列值会被改变
3、改变序列的初始值只能通过删除序列之后重建序列的方法实现
4、执行一些验证(例如,新的maxvalue小于单前的序列号)
5、使用drop语句删除序列
drop sequence t_std;
创建对象的同义词
通过创建同义词简化对象访问(一个对象的另一个名字),使用同义词可以:
方便访问其他用户的对象,缩短对象名字的长度
创建的删除同义词
为视图dept_sum_vu创建一个较短名称的同义词
create synonym d_sumfordept_sum_vu;
删除同义词:
drop synonym d_sum;