序列
创建语法
CREATE SEQUENCE sequence name
[ INCREMENT BY n]
[START WITH n]
[ {MAXVALUE n| NOMAXVALUE} ]
[ {MINVALUE n| NOMINVALUE} ]
[CYCLE]
序列就是计数器,属于用户创建的数据库对象。典型的用途是创建一个主键值,在插入记录时通过使用序列可以确保为每个插入的列分配新的唯一序号。它可以用来代替应用程序编号。
伪类型:NEXTVALUE:下一个值。常用于插入。
修改语法:
CREATE SEQUENCE sequence name
[ INCREMENT BY n]
[START WITH n]
[ {MAXVALUE n| NOMAXVALUE} ]
[ {MINVALUE n| NOMINVALUE} ]
[CYCLE | NOCYCLE ]
视图
分类
- 关系视图
- 内嵌视图
- 对象视图
- 物化视图
视图是对根据预定义的选择标准由一个或多个行的集合建立起来的动态表的静态定义。
视图就相当于一个眼睛,本身没有数据,但是用户可以对其进行操作。可以看成一个虚表。
创建
CREATE
[OR REPLACE] [FORCE| NOFORCE] VIEW
[USER. ] view_name
[ column1[, column2]...]
AS query
[WITH CHECK OPTION [CONSTRAINT constraint_name]
[WITH READ ONLY]
注意:创建视图之前要把创建视图权限打开。
对视图执行update、delete、insert操作,表中数据也会修改。
WITH CHECK OPTION字段:对视图的约束 。使用此选项后,通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如INSERT操作,那么加入的记录在刷新视图后必须可以看到;如果修改,修改完的结果也必须能通过该视图看到;如果删除,当然只能删除视图里有显示的记录。
WITH READ ONLY选项:可以在创建视图时带上WITH READ ONLY选项,以确保无DML操作发生。任何对带只读约束的视图进行的插入或修改行的尝试,Oracle都将提示错误 。
内嵌视图
内嵌视图(inline view,内建视图,内联视图) 内嵌视图是一个带有别名(或相关名)的、可以在SQL 语句中使用的子查询。
内嵌视图不是模式对象。从根本上来讲,内嵌视图就是嵌入到父查询中的查询。
对象视图
Oracle的对象—— 关系技术是构建在关系结构上的对 象层。在对象层以下数据需要存储在关系表中,但是 Oracle允许用户将这些数据封装在对象类型中。
创建:
create type emp_obj is object(
id number(38),
ename varchar2(30),
email varchar2(30)
);
create table emp of emp_obj;
CREATE VIEW emp_email OF emp_obj
WITH OBJECT OID(id)
AS
SELECT emp.id,emp.email FROM emp;
物化视图
在Oracle 8i以前的版本中,这些对象被称为快照。从 Oracle 8i以后,这些对象被重命名为物化视图。从本质上来看,物化视图就是在数据库中存储的查询 结果。与在运行时确定结果的关系视图不同,物化视 图的结果会预先计算并且存储。
数据变化小的时候,比较适合使用物化视图。
同义词
创建同义词可以简化对象访问(对象的另一个名字)。
同义词能够:
- 使用户更加方便的引用另一个用户的表
- 使对象名字变短
创建一个同义词可以除去对象名必须带的方案限制同义词可以用来替换表名、视图名、序列名和过程 名或其它对象名。
共有同义词相当于所有的用户都可以使用,创建共有同义词需要一定的权限;私有同义词只能某个用户使用。