Oracle数据库(十一)—— 视图

视图是一种虚表

视图建立在已有表的基础上, 视图赖以建立的这些表称为基表

向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句

视图向用户提供基表数据的另一种表现形式

2、为什么使用视图

控制数据访问

简化查询

避免重复访问相同的数据

3、 简单视图和复杂视图

Oracle数据库(十一)—— 视图

4、创建简单视图

Oracle数据库(十一)—— 视图

Oracle数据库(十一)—— 视图

 

在 CREATE VIEW 语句中嵌入子查询

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

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

AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY [CONSTRAINT constraint]];

子查询可以是复杂的 SELECT 语句

create or replace view empview

as

select employee_id emp_id,last_name name,department_name

from employees e,departments d

Where e.department_id = d.department_id;

描述数据结构

Oracle数据库(十一)—— 视图

修改视图数据

Oracle数据库(十一)—— 视图

视图中的数据进行增删改,原表中的数据也会改变

创建视图时在子查询中给列定义别名 在选择视图中的列时应使用别名

Oracle数据库(十一)—— 视图

5、修改视图

使用CREATE OR REPLACE VIEW 子句修改视图

CREATE VIEW 子句中各列的别名应和子查询中各列相对应

Oracle数据库(十一)—— 视图

屏蔽DML操作

可以使用 WITH READ ONLY 选项屏蔽对视图的DML 操作

任何 DML 操作都会返回一个Oracle server 错误

Oracle数据库(十一)—— 视图

6、创建复杂视图

Oracle数据库(十一)—— 视图

视图中使用DML的规定

1、可以在简单视图中执行 DML 操作

2、当视图定义中包含以下元素之一时不能使用delete:

组函数

GROUP BY 子句

DISTINCT 关键字

ROWNUM 伪列

Oracle数据库(十一)—— 视图

3、当视图定义中包含以下元素之一时不能使用update:

组函数

GROUP BY子句

DISTINCT 关键字

ROWNUM 伪列

列的定义为表达式

Oracle数据库(十一)—— 视图

4、当视图定义中包含以下元素之一时不能使insert:

组函数

GROUP BY 子句

DISTINCT 关键字

ROWNUM 伪列

列的定义为表达式

表中非空的列在视图定义中未包括

Oracle数据库(十一)—— 视图

 7、删除视图

删除视图只是删除视图的定义,并不会删除基表 的数据

Oracle数据库(十一)—— 视图

8、Top-N 分析

Top-N 分析查询一个列中最大或最小的 n 个值

最大和最小的值的集合是 Top-N 分析所关心的

SELECT [column_list], ROWNUM

FROM (SELECT [column_list]

     FROM table

     ORDER BY Top-N_column)

WHERE ROWNUM <= N;

注意: 对 ROWNUM 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzfyj.html