十三、视图
目 标
- 描述视图
- 创建和修改视图的定义,删除视图
- 从视图中查询数据
- 通过视图插入, 修改和删除数据
- 使用“Top-N” 分析
常见的数据库对象
视 图
•视图是一种虚表
•视图建立在已有表的基础上, 视图赖以建立的这些表称为==基表==
•向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为==存储起来的 SELECT 语句==
•视图向用户提供基表数据的另一种表现形式
为什么使用视图
- •控制数据访问
- •简化查询
- •避免重复访问相同的数据
简单视图和复杂视图
创建视图
-
•在 CREATE VIEW 语句中嵌入子查询
-
•子查询可以是复杂的 SELECT 语句
-
•创建视图举例
-
•描述视图结构
-
•创建视图时在子查询中给列定义别名
-
•在选择视图中的列时应使用别名
查询视图
修改视图
-
•使用CREATE OR REPLACE VIEW 子句==修改视图==
-
•CREATE VIEW 子句中各列的别名应和子查询中各列相对应
创建复杂视图
视图中使用DML的规定
- •可以在简单视图中执行 DML 操作
- •当视图定义中包含以下元素之一时不能使用delete:
- –组函数
- –GROUP BY 子句
- –DISTINCT 关键字
- –ROWNUM 伪列
- 当视图定义中包含以下元素之一时不能使用update:
- •组函数
- •GROUP BY子句
- •DISTINCT 关键字
- •ROWNUM 伪列
- •列的定义为表达式
- 当视图定义中包含以下元素之一时不能使insert:
- •组函数
- •GROUP BY 子句
- •DISTINCT 关键字
- •ROWNUM 伪列
- •列的定义为表达式
- •表中非空的列在视图定义中未包括
屏蔽 DML 操作
- •可以使用 WITH READ ONLY 选项屏蔽对视图的DML 操作
- •任何 DML 操作都会返回一个Oracle server 错误
删除视图
删除视图只是删除视图的定义,并不会删除基表的数据
Top-N 分析
- •Top-N 分析查询一个列中最大或最小的 n 个值:
- 销售量最高的十种产品是什么?
- 销售量最差的十种产品是什么?
- •最大和最小的值的集合是 Top-N 分析所关心的
ROWBUM可理解为
select *
from(
select rownum rn,employee_id,salary
from(
select employee_id,salary,last_name
from employees
order by salary desc
)
)where rn <=50 and rn >40
总 结
- •控制数据访问
- •简化查询
- •数据独立性
- •删除时不删除数据
- •Top-N 分析