1、为什么使用视图(1)限制数据的存取:用户只能看到基表的部分信息。

(2)使得复杂的查询变得容易:视图中的数据可能来自多个表。

(3)使得数据相对比较独立:从项目开发的角度,模块对应视图,模块包含多个表,模块发生变化后只需修改相应的视图,对应的表的结构无需修改。

(4)代表对同一数据的不同视角:不同部门的员工只能看到本部门的信息。

2、创建视图CREATE VIEW empvu10

AS SELECT empno, ename,

job

FROM emp1

WHERE deptno=30

/ (定义视图的查询中不能使用ORDER BY子句)

3、查询视图视图定义的SELECT语句保存在LONG型的TEXT字段中。

使用SET LONG

150增加LONG型最大显示宽度,默认为80

select * from user_views

/

语法说明

CREATE [OR

REPLACE] [FORCE|NOFORCE] VIEW view

[(alias[, alias]...)]

AS

subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ

ONLY];

OR REPLACE             如果视图已存在,相当于修改视图

FORCE | [NOFORCE]

无论基表是否存在都建立视图 [只有基表存在能创建]

WITH CHECK OPTION

通过视图执行的INSERT和UPDATE操作不能创建该视图检索不到的数据行

WITH READ ONLY      禁止对视图执行DML操作

4、建立复杂的视图

//不能通过修改视图修改基表的数据

CREATE VIEW

dept_sum_vu

(dname,minsal,maxsal,avgsal)

AS SELECT

d.dname,MIN(e.sal),

MAX(sal),AVG(sal)

FROM emp e,dept d

WHERE

e.deptno=d.deptno

GROUP BY d.dname

/

数据来自多个表,查询中使用了分组函数

5、WITH CHECK OPTION选项示例

CREATE OR REPLACE VIEW empvu20

AS SELECT *

FROM emp

WHERE

deptno=20

WITH CHECK OPTION CONSTRAINT empvu20_ck

/

查询生成的视图索引

select

constraint_name,constraint_type from user_constraints where

constraint_type='V'

/

通过视图更新员工部门号

UPDATE empvu20

SET

deptno=10

WHERE empno=7902

/

UPDATE empvu20

*

ERROR at line

1:

ORA-01402: view WITH CHECK OPTION where-clause

violation

违反了约束,因为部门号更新为10后,该视图不能再检索到该行。

同样,在该视图上也不能insert非20号部门的员工。

6、TOP-N(利用内联视图实现)错误的     (先得到3行,为这3行排序)

select

sal

from emp1

where rownum <= 3

order by sal desc

/

正确的

(先对所有数据排序,再取前三行)

select sal

from ( select sal from emp1 order by sal

desc)

where rownum < 4

/

7、视图的DML操作含有如下情况,则不能删除视图中的数据:

含有聚组函数

含有GROUP BY

子句

含有 DISTINCT 关键字

含有ROWNUM

这个伪列

含有如下情况,不能修改该视图中的数据:

上面提到的任何一种情况。

列是由表达式来进行定义的

含有如下情况,不能增加该视图中的数据:

上面提到的任何一种情况。

在基表中包含有

NOT NULL约束的列,然而该列并没有在视图中出现

原则:只要视图中的数据不是来自基表的原始数据,就不能对该数据做DML操作。

DML示例:建立视图包含rownumcreate or replace view

e1_m_v

as

select ename, sal, hiredate from emp1

where

job='MANAGER'

and   rownum < 3

/

对该视图做DML操作

update e1_m_v set

sal=3000 where ename='BLAKE'

/

delete from e1_m_v where

ename='BLAKE'

/

ERROR at line 1:

ORA-01732: data manipulation operation

not legal on this view

oracle 视图使用rownum,Oracle数据对象--视图相关推荐

  1. Oracle数据库之rownum,ORACLE数据库中Rownum用法详解

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(,& gt;=,=, ...

  2. oracle如何查rownum,Oracle中分段查询rownum

    Oracle中的排序sql语法 第一种 select a.*   from (select b.*, rownum row_num           from (select * from ac o ...

  3. mysql视图表修复_mysql中含有视图数据库在恢复数据时视图变成数据表的解决方法...

    # version:      1.0 for linux # method:       全备份mysql数据 # author:       fengzhanhai # history:      ...

  4. Oracle对象——视图之简单视图与视图约束

    文章目录 什么是视图 为什么会使用视图 视图语法 案例 简单视图的创建 更改数据基表,视图数据会变化么? 更改视图数据,基表数据会变更么? 带检查约束的视图 结论 创建只读视图(MySQL不支持) 总 ...

  5. 【软件测试】Oracle中的rownum用法

    一.对rownum的说明 查看全文 http://www.taodudu.cc/news/show-3538609.html 相关文章: Oracle rownum 用法 Oracle rownum ...

  6. Oracle之数据对象(同义词、序列、视图、表空间、索引)

    文章目录 数据库对象 概述 同义词 序列 视图 表空间 创建表空间 扩容表空间 增加数据文件 表空间的备份(冷备份) 索引 SQL优化建议(14则) 工具:sql developer 数据库对象 概述 ...

  7. oracle删除所有触发器的命令,Oracle删除当前用户的所有对象(表、视图、触发器、存储过程、函数)...

    Oracle删除当前用户的所有对象(表.视图.触发器.存储过程.函数) 1. DECLARE TYPE name_list IS TABLE OF VARCHAR2(40); TYPE type_li ...

  8. Oracle创建视图实现获取当前数据所在的页数,这里以每页2条数据分页

    摘要:Oracle创建视图实现获取当前数据所在的页数,这里以每页2条数据分页,详细请看: 一: DROP VIEW MIP.TB_CMS_FLGTINFO_D_VIEW;/* Formatted on ...

  9. oracle怎么把数据跑进视图里,在Oracle中向视图中插入数据的方法

    在Oracle中向视图中插入数据的方法 插入视图的条件: 1.如果视图是基于一个基础表产生的,那么这就称为非连接视图,所有的非连接视图都是可以更新的,也就是说可以在该视图上进行,INSERT,UPDA ...

最新文章

  1. 【OpenCV】正确创建用于保存YUV420P格式的cv::Mat
  2. 中兴c600olt数据配置_中兴上架Blade 20smart孝心版
  3. android悬浮按钮弹出与隐藏,Android悬浮窗按钮实现点击并显示/隐藏多功能列表
  4. 多云战略未来五大趋势分析,必看!
  5. springboot获取URL请求参数的几种方法
  6. Debian 8安装Lamp 的坑
  7. 国内Linux shell,管理你的 shell 环境 | Linux 中国
  8. Postman(使用指南)
  9. 封装axios统一请求
  10. spingMVC 请求参数绑定
  11. Ubuntu系统上安装微信(legacy)
  12. 软件平台与框架的生命周期
  13. PLCrashReporter使用
  14. 用python写网络爬虫-英文翻译
  15. python黑马视频全套-2018年6月北京黑马python24期全套视频课程
  16. Spring Boot学习8——Redis
  17. SpringMVC 学谈 (第二章)
  18. EasyExcel动态导出-动态头
  19. Rancher简介和部署
  20. 华为OD机试2023年最新题库(JAVA、Python、C++)

热门文章

  1. iOS开发系列--并行开发其实很容易
  2. Win7访问局域网内共享文件夹
  3. Linux后台进程管理以及ctrl+z(挂起)、ctrl+c(中断)、ctrl+\(退出)和ctrl+d(EOF)的区别
  4. Python中使用you-get库批量在线下载bilibili视频的教程
  5. 人脸识别领域相关金融标准将出台
  6. TCP/IP详解--TCP/IP中三次握手 四次握手状态分析
  7. VC++ MFC DLL动态链接库编写详解
  8. 报错笔记:cannot convert parameter 1 from 'char [1024]' to 'unsigned char *'
  9. 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)
  10. html模板是干嘛的,html模板有什么用