视图是一种虚表
视图建立在已有表的基础上, 视图赖以建立的这些表称为基表
向视图提供数据内容的语句为 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 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据。