oracle 视图的相关操作

视图:---view

视图操作:1.描述视图2.创建视图3.通过视图获得数据4.改变视图的定义5.通过视图操作数据6.删除视图

什么是视图:

为什么使用视图:原因

1.限制对数据的访问2.很容易的写成复杂的查询3.允许数据的独立性4.不同的视图可获得相同的数据

 

创建视图:

创建视图的语句中可嵌入子查询.

 

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view

[(alias[, alias]...)]

AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY]

1.子查询中可包括复杂的 SELECT 语法.

2.子查询中不能包含ORDER BY 子句.

创建视图:

方法一:

SQL> CREATE VIEW empvu10

AS SELECT  empno, ename, job

FROM  emp

WHERE  deptno = 10;

使用 SQL*Plus DESCRIBE 命令描述视图结构.

SQL> DESCRIBE empvu10

方法二:

在子查询中使用列别名创建视图.

SQL> CREATE VIEW salvu30

AS SELECT empno EMPLOYEE_NUMBER, ename NAME,

sal SALARY

FROM  emp

WHERE  deptno = 30;

在查询视图时使用列别名.

SQL> SELECT EMPLOYEE_NUMBER, NAME, SALARY

FROM salvu30;

查询USER_VIEWS数据字典视图

 

修改视图:

使用CREATE OR REPLACE VIEW 子句修改 视图 ,并为每列加别名.

SQL> CREATE OR REPLACE VIEW empvu10

(employee_number, employee_name, job_title)

AS SELECT empno, ename, job

FROM  emp

WHERE  deptno = 10;

在CREATE VIEW语句中列的别名的顺序是和子查询中一致的.

 

创建复杂的视图

复杂视图的特点:

1.从多个表查询

2.包含函数

3.包含分组数据

 

 

SQL> CREATE VIEW  dept_sum_vu

(name, minsal, maxsal, avgsal)

AS SELECT d.dname, MIN(e.sal), MAX(e.sal), AVG(e.sal)

FROM  emp e, dept d

WHERE  e.deptno = d.deptno

GROUP BY d.dname;

 

对视图进行DML操作的规则

1.可对简单视图执行DML操作

2.在下列情况下不能删除记录,

★视图包括组函数

★视图包括group by 子句

★视图包括distinct

★Rownum为列关键词

3.在下列情况下不能修改记录

★前面所提到的情况

★列是由表达式定义的

★包括rownum虚列

4.在下列情况下不能添加记录

★前面所提到的情况

★视图的基表有非空列,但在视图中没有此列

使用 WITH CHECK OPTION 子句

使用WITH CHECK OPTION可使DML操作限制在视图所包含的范围

内.

 

 

SQL> CREATE OR REPLACE VIEW empvu20

AS SELECT  *

FROM  emp

WHERE deptno = 20

WITH CHECK OPTION CONSTRAINT empvu20_ck;

 

删除视图:

删除视图并不删除基表中的数据

DROP VIEW view;

SQL> DROP VIEW empvu10;

View dropped.

视图可从其他的表或视图中获取数据.

视图提供如下优点:

★限制数据的访问

★简化查询

★提供独立的数据

★允许多个视图使用相同的数据

★删除时不影响基表

 

其他数据库对象

• 描述其他的数据库对象和使用

创建,修改,使用序列号

创建和维护索引

• 创建公共和私有的同义词

数据库对象:table,view,sequence(生成主键值),Index(改进查询的性能),synonym(为对象建立一个同名对象)。

posted @ 2018-04-02 00:59  正厚7期-杨秀梅  阅读(208)  评论(0编辑  收藏  举报