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

1、什么是视图

  • 视图是一种虚表
  • 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表
  • 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句
  • 视图向用户提供基表数据的另一种表现形式

2、为什么使用视图

  • 控制数据访问
  • 简化查询
  • 避免重复访问相同的数据

3、 简单视图和复杂视图

4、创建简单视图

 

在 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;

 

描述数据结构

修改视图数据

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

 

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

 

5、修改视图

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

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

 

屏蔽DML操作

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

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

 

6、创建复杂视图

视图中使用DML的规定

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

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

  • 组函数
  • GROUP BY 子句
  • DISTINCT 关键字
  • ROWNUM 伪列

 

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

  • 组函数
  • GROUP BY子句
  • DISTINCT 关键字
  • ROWNUM 伪列
  • 列的定义为表达式

 

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

  • 组函数
  • GROUP BY 子句
  • DISTINCT 关键字
  • ROWNUM 伪列
  • 列的定义为表达式
  • 表中非空的列在视图定义中未包括

 

 7、删除视图

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

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 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据。

ROWNUM"伪列" ---- 数据表本身并没有这样的列, 是 ORACLE数据库为每个数据表 "加上的" 列.
可以标识行号.默认情况下 ROWNUM按主索引来排序. 若没有主索引则自然排序.

 

-- 查询员工表中,工资前10名的员工信息。

 

-- 查询员工表中,工资排名在10-20之间的员工信息。

 

9、总结

了解视图的优点和基本应用:

  • 控制数据访问
  • 简化查询
  • 数据独立性
  • 删除时不删除数据
  • Top-N 分析
posted @ 2018-08-05 11:37  秋风de领域  阅读(484)  评论(0编辑  收藏  举报