视图

视图(view):从表中抽出的逻辑上相关的数据集合

视图是一种虚表

视图建立在已有表的基础上,视图赖以建立的这些表成为基表

向视图提供数据内容的语句为select语句,可以将视图理解为存储起来的SELECT语句

视图向用户提供基表数据的另一种表现形式

为什么使用视图?

1.控制数据访问

2.简化查询(可以基于多个已存在的表构建视图

3.避免重复访问相同的数据

-------修改视图---------

使用create or replace view 子句修改视图

------屏蔽DML操作----

可以使用with read only选项屏蔽对视图的DML操作

此时任何DML操作都会返回一个错误

----简单视图和复杂视图----------

如果在创建视图时使用了分组函数就是复杂视图

特性

简单视图 复杂视图
表的数量 一个 一个或多个
函数 没有
分组 没有
DML操作 可以 有时可以

----------在视图中使用DML的规定------------

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

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

-组函数

-group by 子句

-distinct 关键字

-rownum 伪例

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

-组函数

-group by 子句

-ditinct 关键字

-rownum 伪列

-列的定义为表达式(例如avg)

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

-组函数

-group by 子句

-ditinct 关键字

-rownum 伪列

-列的定义为表达式

-表中非空的列在视图定义中未包括

--------TOP-N分析--------------

TOP-N分析查询一个列中最大或最小的n个值

最大和最小的值的集合是TOP-N分析所关心的

---查询工资前十名的员工的top-n分析-----

select rownum,employee_id,salary
from (select employee_id,salary
from employees
order by salary
)
where rownum<=10

注意:对rownum只能使用<或<=,而用=,>,>=都将不能返回任何数据

如果要查询一个区间内的值,需要给rownum起一个别名

select * from(

select rownum rn,employee_id,salary

from (

select employee_id,salary,last_name

from employees

order by salary desc

)

)

where re<=50 and rn>=40

posted @ 2022-06-24 00:47  桥桥泽  阅读(88)  评论(0编辑  收藏  举报