标签:salary DML 视图 子句 rownum select
视图(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
标签:salary,DML,视图,子句,rownum,select 来源: https://www.cnblogs.com/qlxz/p/16407319.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。