十三、视图

十三、视图

目 标

  • 描述视图
  • 创建和修改视图的定义,删除视图
  • 从视图中查询数据
  • 通过视图插入, 修改和删除数据
  • 使用“Top-N” 分析

常见的数据库对象

十三、视图

视 图

•视图是一种虚表

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

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

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

十三、视图

为什么使用视图

  • •控制数据访问
  • 简化查询
  • •避免重复访问相同的数据

简单视图和复杂视图

十三、视图

创建视图

  • CREATE VIEW 语句中嵌入子查询

    十三、视图

  • •子查询可以是复杂的 SELECT 语句

十三、视图

  • •创建视图举例

    十三、视图

  • •描述视图结构

    十三、视图

  • •创建视图时在子查询中给列定义别名

    十三、视图

  • •在选择视图中的列时应使用别名

查询视图

十三、视图

十三、视图

修改视图

  • •使用CREATE OR REPLACE VIEW 子句==修改视图==

    十三、视图

  • •CREATE VIEW 子句中各列的别名应和子查询中各列相对应

创建复杂视图

十三、视图

十三、视图

视图中使用DML的规定

  • •可以在简单视图中执行 DML 操作
  • •当视图定义中包含以下元素之一时不能使用delete:
    • –组函数
    • –GROUP BY 子句
    • –DISTINCT 关键字
    • –ROWNUM 伪列

十三、视图

  • 当视图定义中包含以下元素之一时不能使用update:
    • •组函数
    • •GROUP BY子句
    • •DISTINCT 关键字
    • •ROWNUM 伪列
    • •列的定义为表达式
  • 当视图定义中包含以下元素之一时不能使insert:
    • •组函数
    • •GROUP BY 子句
    • •DISTINCT 关键字
    • •ROWNUM 伪列
    • •列的定义为表达式
    • •表中非空的列在视图定义中未包括

屏蔽 DML 操作

  • •可以使用 WITH READ ONLY 选项屏蔽对视图的DML 操作
  • •任何 DML 操作都会返回一个Oracle server 错误

十三、视图

删除视图

删除视图只是删除视图的定义,并不会删除基表的数据

十三、视图

Top-N 分析

  • •Top-N 分析查询一个列中最大或最小的 n 个值:
    • 销售量最高的十种产品是什么?
    • 销售量最差的十种产品是什么?
  • •最大和最小的值的集合是 Top-N 分析所关心的

十三、视图

ROWBUM可理解为

十三、视图

十三、视图

十三、视图

select *
from(
select rownum rn,employee_id,salary
from(
select employee_id,salary,last_name
from employees
order by salary desc
)
)where rn <=50 and rn >40

总 结

  • •控制数据访问
  • •简化查询
  • •数据独立性
  • •删除时不删除数据
  • Top-N 分析
上一篇:MySql之事务


下一篇:Mysql实战(DML增删改+Select)