- 1. 视图
- 2. 目标通过本章学习,您将可以:
描述视图
创建和修改视图的定义,删除视图
从视图中查询数据
通过视图插入, 修改和删除数据
创建和使用临时视图
使用“Top-N” 分析
- 3. 常见的数据库对象对象 描述
表 基本的数据存储集合,由行和列组成。
视图 从表中抽出的逻辑上相关的数据集合。
序列 提供有规律的数值。
索引 提高查询的效率
同义词 给对象起别名
- 4. 视图表EMPLOYEES :
- 5. 为什么使用视图控制数据访问
简化查询
数据独立性
避免重复访问相同的数据
- 6. 简单视图和复杂视图特性 简单视图 复杂视图
表的数量 一个 一个或多个
函数 没有 有
分组 没有 有
DML 操作 可以 有时可以
- 7. 创建视图在CREATE VIEW语句中嵌入子查询
子查询可以是复杂的 SELECT 语句CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
- 8. 创建视图创建视图举例
描述视图结构
DESCRIBE empvu80CREATE VIEW empvu80
AS SELECT employee_id, last_name, salary
FROM employees
WHERE department_id = 80;
View created.
- 9. 创建视图创建视图时在子查询中给列定义别名
在选择视图中的列时应使用别名CREATE VIEW salvu50
AS SELECT employee_id ID_NUMBER, last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 50;
View created.
- 10. 查询视图SELECT *
FROM salvu50;
- 11. 查询视图 USER_VIEWS
EMPVU80
SELECT employee_id,
last_name, salary
FROM employees
WHERE department_id=80; SQL*Plus
SELECT *
FROM empvu80;EMPLOYEESOracle Server
- 12. 修改视图使用CREATE OR REPLACE VIEW 子句修改视图
CREATE VIEW 子句中各列的别名应和子查询中各列相对应CREATE OR REPLACE VIEW empvu80
(id_number, name, sal, department_id)
AS SELECT employee_id, first_name || ' ' || last_name,
salary, department_id
FROM employees
WHERE department_id = 80;
View created.
- 13. 创建复杂视图复杂视图举例CREATE VIEW dept_sum_vu
(name, minsal, maxsal, avgsal)
AS SELECT d.department_name, MIN(e.salary),
MAX(e.salary),AVG(e.salary)
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY d.department_name;
View created.
- 14. 视图中使用DML的规定可以在简单视图中执行 DML 操作
当视图定义中包含以下元素之一时不能使用delete:
组函数
GROUP BY 子句
DISTINCT 关键字
ROWNUM 伪列
- 15. 视图中使用DML的规定当视图定义中包含以下元素之一时不能使用update :
组函数
GROUP BY子句
DISTINCT 关键字
ROWNUM 伪列
列的定义为表达式
- 16. 视图中使用DML的规定当视图定义中包含以下元素之一时不能使用insert :
组函数
GROUP BY 子句
DISTINCT 关键字
ROWNUM 伪列
列的定义为表达式
表中非空的列在视图定义中未包括
- 17. 使用 WITH CHECK OPTION 子句确保DML只能在特定的范围内执行
任何违反WITH CHECK OPTION 约束的请求都会失败CREATE OR REPLACE VIEW empvu20
AS SELECT *
FROM employees
WHERE department_id = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck ;
View created.WITH CHECK OPTION 子句
- 18. 屏蔽 DML 操作可以使用 WITH READ ONLY 选项屏蔽对视图的DML 操作
任何 DML 操作都会返回一个Oracle server 错误
- 19. 屏蔽 DML 操作CREATE OR REPLACE VIEW empvu10
(employee_number, employee_name, job_title)
AS SELECT employee_id, last_name, job_id
FROM employees
WHERE department_id = 10
WITH READ ONLY;
View created.
- 20. 删除视图删除视图只是删除视图的定义,并不会删除基表的数据DROP VIEW empvu80;
View dropped.DROP VIEW view;
- 21. 临时视图临时视图可以是嵌套在 SQL语句中的子查询
在FROM 子句中的的子查询是临时视图
临时视图不是数据库对象
- 22. Top-N 分析Top-N 分析查询一个列中最大或最小的 n 个值:
销售量最高的十种产品是什么?
销售量最差的十种产品是什么?
最大和最小的值的集合是 Top-N 分析所关心的
- 23. Top-N 分析查询最大的几个值的 Top-N 分析:
SELECT [column_list], ROWNUM
FROM (SELECT [column_list]
FROM table
ORDER BY Top-N_column)
WHERE ROWNUM <= N;
- 24. Top-N 分析查询工资最高的三名员工:SELECT ROWNUM as RANK, last_name, salary
FROM (SELECT last_name,salary FROM employees
ORDER BY salary DESC)
WHERE ROWNUM <= 3;312123
- 25. 总结通过本章学习,您已经了解视图的优点和基本应用:
控制数据访问
简化查询
数据独立性
删除时不删除数据
子查询是临时视图的一种
Top-N 分析