Oracle对象之视图
视图的基本语法:
CREATE[OR REPLACE][FORCE][NOFORCE]VIEW view_name
[(column_name)[,….n]]
AS
Select_statement
[WITH CHECK OPTION[CONSTRAINT constraint_name]]
[WITH READ ONLY]
说明:
view_name : 视图的名字
column_name: 视图中的列名
在下列情况下 , 必须指定视图列的名称
* 由算术表达式 , 系统内置函数或者常量得到的列
* 共享同一个表名连接得到的列
* 希望视图中的列名与表中的列名不同的时候
REPLACE: 如果创建视图时, 已经存在此视图, 则重新创建此视图, 相当于覆盖
FORCE: 强制创建视图, 无论的视图所依赖的基表否存在或是否有权限创建
NOFORCE: 只有基表存在且具有创建视图权限时, 才可以创建视图
WITH CHECK OPTION 指出在视图上所进行的修改都要符合select_statement 所指定的限制条件
WITH READ ONLY 只允许查看视图
视图的定义原则:
1. 视图的查询可以使用复杂的 SELECT 语法,包括连接 / 分组查询和子查询;
2. 在没有 WITH CHECK OPTION 和 READ ONLY的情况下,查询中不能使用
ORDER BY子句;
3. 如果没有为 CHECK OPTION 约束命名,系统会自动为之命名,形式为 SYS_Cn;
4. OR REPLACE 选项可以不删除原视图便可更改其定义并重建,或重新授予对象
权限。
1. 查询视图: 可依赖于多个基表.
SELECT * FROM view_name; /* 类似于查询表数据*/
2. 更新视图的前提:
没有使用连接函数, 集合运算和组函数. 创建视图的select 语句中没有集合函数且没有GROUP BY,ONNECT BY ,START WITH 子句及DISTINCT 关键字. 创建视图的SELECT 语句中不包含从基表列通过计算所得的列. 创建视图没有包含只读属性.
3. 插入数据
INSERT INTO view_name VALUES();
4. 修改数据:
UPDATE view_name SET …
若一个视图依赖于多个基本表, 则一次修改该视图只能修改一个基本表的数据.
5. 删除数据:
Delete from view_name where …
同样, 当视图依赖多个基表时, 不能使用此语句来删除基表中的数据. 只能删除依赖一个基表的数据.
6. 修改视图定义:
修改视图的好处在于, 所有相关的权限都依然存在. 语法同创建视图相同.
7. 删除视图:
DROP VIEW view_name;
只有视图所有者和具备DROP VIEW 权限的用户可以删除视图。删除视图的定义不影响基表中的数据。视图被删除后,基于被删除视图的其他视图或应用将无效。
创建视图 SQL> create view empinfoview 2 as 3 select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname 4 from emp e, dept d 5 where e.deptno=d.deptno; 创建视图为只读,加上with read only SQL> create view empinfoview 2 as 3 select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname 4 from emp e, dept d 5 where e.deptno=d.deptno; WITH READ ONLY; 创建或者替代原有视图 SQL> create or replace view empinfoview 2 as 3 select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname 4 from emp e, dept d 5 where e.deptno=d.deptno 6 with read only; 显示视图结构 SQL> desc empinfoview 查看视图 SQL> select * from empinfoview; EMPNO ENAME SAL ANNSAL DNAME ---------- ---------- ---------- ---------- -------------- 7369 SMITH 800 9600 RESEARCH 7499 ALLEN 1600 19200 SALES 7521 WARD 1250 15000 SALES 7566 JONES 2975 35700 RESEARCH 7654 MARTIN 1250 15000 SALES 7698 BLAKE 2850 34200 SALES 7782 CLARK 2450 29400 ACCOUNTING 7788 SCOTT 3000 36000 RESEARCH 7839 KING 5000 60000 ACCOUNTING 7844 TURNER 1500 18000 SALES 7876 ADAMS 1100 13200 RESEARCH