Creating Views

1.什么是视图?
•视图是基于表或另一个视图的逻辑表,一个视图并不包含它自己的数据
 视图象一个窗口,通过该窗口可以查看或改变表中的数据。
•视图基于其上的表,称为基表(base tabl)
•视图在数据字典中作为一个SELECT语句存储

2.为什么用视图?
•限制数据访问,因为视图能够选择性的显示表中的列
•使得复杂的查询变得容易
•视图对特定的用户和应用程序提供数据独立性,一个视图可以从几个表中取回数据
•表现相同数据的不同观察,视图提供用户组按照他们的特定的标准访问数据

3.简单视图和复杂视图
•视图有两种分类:
 简单视图和复杂视图,基本区别涉及DML (INSERT、UPDATE和DELETE) 操作

•简单视图:
 − 数据仅来自一个表
 − 不包含函数或数据分组
 − 能通过视图执行DML操作
•复杂视图:
− 数据来自多个表
− 包含函数或数据分组
− 不总是允许通过视图进行DML操作

4.创建视图
•在CREATE VIEW语句中嵌入一个子查询
•语法:
 CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 视图名
 [(列别名[,列别名]...)]
 AS
 子查询
 [WITH CHECK OPTION [CONSTRAINT 约束名]]
 [WITH READ ONLY [CONSTRAINT 约束名]];
•说明:
 FORCE 选项: 不管基表是否存在,都创建视图
 NOFORCE 选项: 只有基表存在的情况下,才创建视图。这是默认选项
 WITH CHECK OPTION 选项:指定只有在视图中可访问的行(子查询指定的行),才能被插入或修改
 WITH READ ONLY 选项:  只读,确保在该视图中不能执行DML操作

5.创建视图的原则:
•定义一个视图的子查询可以包含复杂的SELECT语法,包括连接、分组和子查询。
•定义视图的子查询中不能包含 ORDER BY 子句。
•如果没有为用WITH CHECK OPTION选项创建的视图指定一个约束名,系统将自动指定一个名字(SYS_Cn)
•你可以用 OR REPLACE 选项改变视图的定义而无须删除和重新创建它,或重新授予以前已经授予它的对象权限。

6.视图中的别名:
•有两者方式为视图中的列指定别名:
–在子查询中使用别名,则子查询的列名列表就称为视图的列名列表
–在定义实体时,在AS关键字之前指定列名列表,指定的列的数目必须与子查询中的列的数目相符

7.从视图中取回数据
•可以象从任何表中取回数据一样从视图取回数据

8.与视图相关的数据字典
•一旦视图被创建,你就可以查询数据字典视图 USER_VIEWS,来查看视图的名字和视图定义
 构成视图的子查询的文本被存储在数据字典 USER_VIEWS 的一个 LONG 列中
•当你用视图存取数据时,Oracle 服务器执行下面的操作:
 1) 从数据字典表 USER_VIEWS 中取回视图定义。
 2) 检查对视图的基表的数据存取权限。
 3) 转换视图查询为一个在基表或表上的等价操作,换句话说,数据从基表得到,或更新基表。

9.视图中 DML 操作的执行规则
•可以在简单视图上执行DML 操作
•如果视图的子查询中包含下面的部分,就不能删除行(delete):
–组函数
–GROUP BY子句
–DISTINCT关键字
–伪列ROWNUM关键字

•如果视图中包含下面的部分就不能修改数据(update):
–组函数
–GROUP BY 子句
–DISTINCT 关键字
–伪列ROWNUM 关键字
–用表达式定义的列

•如果视图中包含下面的部分就不能通过视图添加数据(insert):
–组函数
–GROUP BY子句
–DISTINCT关键字
–伪列ROWNUM关键字
–用表达式定义的列
–基表中存在的NOT NULL的列,但却不在视图中

10.WITH CHECK OPTION 子句
•WITH CHECK OPTION 表示,在视图上插入和更新行时,产生的新行必须是能被视图显示的
 如果产生的新行不属于视图所选择的行,将会报错。

11.WITH READ ONLY 选项
•可以在创建视图时带上WITH READ ONLY 选项,以确保无DML操作发生。
•如果用户没有提供约束名,系统将以SYS_Cn格式指定一个名字
•任何对带只读约束的视图进行的插入或修改行的尝试,Oracle都将提示错误

12.删除视图
•删除视图不会丢失数据,因为视图是基于数据库中的基表的
•删除视图不影响用于建立该视图的基表
•语法:
 DROP VIEW 视图名 ;

13.内建视图(inline view)
•内建视图是一个带有别名(或相关名)的、可以在SQL语句中使用的子查询
•内建视图不是方案对象
•在一个主查询的FROM子句中指定的已命名子查询,就是一个内建视图的例子
•示例:
 SELECT a.last_name, a.salary, a.department_id, b.maxsal
 FROM employees a,
 (SELECT department_id, max(salary) maxsal FROM employees GROUP BY department_id) b
 WHERE a.department_id = b.department_id
 AND a.salary < b.maxsal;

14.Top-N 分析
•Top-N 查询是寻找一列中的n个最大或最小值,例如:
–销售最好的前10 位产品是什么?
–销售最差的前10 位产品是什么?
•Top-N 分析的基本语法:
 SELECT 列名列表,ROWNUM AS RANK
 FROM (SELECT 列名列表 FROM 表名 ORDER BY 被分析的列 [ASC|DESC])
 WHERE ROWNUM <= n ; -- top-n分析

•Top-N 分析查询语句的两个基本构成:
–在子查询中使用order by字句来进行排序
–在主查询中限制结果集能显示的行数(使用 ROWNUM 伪列)
•示例:
 SELECT rownum as SENIOR,E.last_name, E.hire_date
 FROM (SELECT last_name,hire_date FROM employees
      ORDER BY hire_date) E
 WHERE rownum <= 4;

转载于:https://www.cnblogs.com/zqf620/archive/2007/01/20/625549.html

lz0-007 读书笔记11相关推荐

  1. 大数据之路读书笔记-11事实表设计

    大数据之路读书笔记-11事实表设计 文章目录 大数据之路读书笔记-11事实表设计 11.1 事实表基础 11.1.1 事实表特性 11.1.2 事实表设计原则 11.1.3 事实表设计方法 11.2 ...

  2. PUB/SUB Pattern-Oriented Software Architecture v1巨详细读书笔记 11

    GoF的Observer有没有什么变体存在,他的别名可以叫什么?在本笔记中,Publisher-Subscriber(出版-订阅)模式为这些问题做了完美解答.在笔记的最后还描述了Pattern Sys ...

  3. 《Effective Java》读书笔记 - 11.序列化

    Chapter 11 Serialization Item 74: Implement Serializable judiciously 让一个类的实例可以被序列化不仅仅是在类的声明中加上" ...

  4. 数据段描述符和代码段描述符(二)——《x86汇编语言:从实模式到保护模式》读书笔记11

    这篇博文,我们编写一个C语言的小程序,来解析数据段或者代码段描述符的各个字段.这样我们阅读原书的代码就会方便一点,只要运行这个小程序,就可以明白程序中定义的数据段或者代码段的描述符了. 这段代码,我用 ...

  5. OCA读书笔记(11) - 实现Oracle数据库审计

    11 Implementing Oracle Database Auditing 描述DBA对于安全和审计的职责 使能标准的数据库审计 安全审计选项 查看审计信息 维护审计路径 最小权限原则 只在计算 ...

  6. 读书笔记{11} VLAN及其在生产中的应用

    1 LAN 简介 LAN,Local Area Network,直译为本地区域网,可能是因为为了方便传播,大家基本上都叫它局域网,既然大家都这么叫,如果我们搞特例那就是不明智了. 局域网这个词的侧重其 ...

  7. 魔兽世界编程宝典读书笔记(11)

    第11章            向XML窗体中添加行为 我们现在已经创建了窗体.图形以及字体,并能对窗体的大小和位置进行设置,但是这些窗体都是静态的,不能同用户进行交互,或对任何游戏事件进行响应.本章 ...

  8. 数据挖掘导论读书笔记11异常检测

    异常检测的目标是发现与大部分其他对象不同的对象.通常,异常对象被称作离群点(Outlier). 异常检测也称偏差检测(Deviation detection),因为异常对象的属性值明显偏离期望的或者常 ...

  9. 易经读书笔记11地天泰

    天下太平,君子的责任 象曰 天地交,泰,后以财成天地之道,辅相天地之宜,以左右民. 财通裁 泰卦违背了自然的常理,天上地下.但只有这样,天地才会交,人间才会充满生机,才泰(天下太平). 泰:小往大来, ...

最新文章

  1. 什么是Attention机制以及Pytorch如何使用
  2. Centos下Yum安装PHP5.5,5.6
  3. 如何使用小数据集对大模型进行微调(迁移学习)-微迁移
  4. java使用AES256解密
  5. 做一个有梦想的咸鱼!
  6. 【Java基础】递归输出目录下所有文件路径
  7. oracle外表日期,三步教会你掌握oracle外表(external table)
  8. 如何卸载bytefence anti-malware
  9. 新浪微博客户端(27)-格式化工具条显示数字
  10. 4755. 快速荷叶叶变换
  11. Android项目开发实战——简单备忘录
  12. JavaScript 运算符优先级 - 汇总表
  13. 本地HTML文档批量翻译软件
  14. 老照片:一个澳洲人在大清国的徒步旅行
  15. 七张图,学会做有价值的经营分析
  16. 虚拟服务器怎么突破磁盘2t,创建一个拥有超过2T数据盘的Windows虚拟机
  17. redis集群增加节点和删除节点、或者reshard时报 migrating 错误
  18. 新版小O地图EXCEL版0.6.5.0--专业地图EXCEL插件
  19. Embedding之padding_idx学习
  20. 拼在“最初一公里”的十万年轻人

热门文章

  1. linux vi 上下左右 ab,【Linux】Ubuntu vi 上下左右变ABCD及 apt-get install报错问题解决方法...
  2. Partition分析
  3. (34)FPGA原语设计(BUFGMUX)
  4. (22)FPGA面试题名词解释IRQ、BIOS、USB、VHDL、SDR
  5. php怎么将网页变成图片格式,php如何实现图片格式转换
  6. ajax php登陆界面,实例详解Ajax实现漂亮、安全的登录界面
  7. STM32 USART通信
  8. mysql linux安装百度经验_MySQL 安装(Windows Linux)
  9. 单机rust怎么设置白天_工业除尘器不会选 看看粉尘治理设备生产厂家怎么说
  10. synchronized实现同步的原理和锁状态