Oracle数据库—— 视图
Posted 秋风de领域
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 分析
以上是关于Oracle数据库—— 视图的主要内容,如果未能解决你的问题,请参考以下文章