zoukankan      html  css  js  c++  java
  • 视图

    1:什么是视图
      视图也被称为虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应一条select语句,结果集被赋予一个名字,即视图的名
      字。视图本身并不包含任何数据,只包含映射到基表的一个查询语句,当基表数据发生变化时,视图数据也会随之变化。
    2:创建视图的方法
      create [or replace] view view_name [alias]
      as subquery;
    3:视图创建后可以像操作基表一样操作视图
      语法中的subquery是select查询语句,对应的表被称为基表;
    4:视图的种类
      根据视图所对应的子查询分:
        1:select语句是基于单表建立的,且不包含任何函数运算,表达式或分组函数,叫做简单视图,此视图是基表的子查询。
        2:select语句是基于单表建立的,且包含函数,表达式,分组函数或group by 子句,叫做复杂视图。
        3:select语句是基于多表建立的,叫做连接视图。
    5:视图的作用
       a:简化复杂查询
       b:限制数据访问,对基表中的其他列起到限制和保护作用;
    6:授权创建视图
       创建是视图的DDL语句为,create view,用户必须有create view系统权限,才能创建视图。如果没有权限,创建视图会提
       示:权限不足。
         管理员可以通过DCL语句授予用户创建视图的权限,语句为:grant create view to tarena;
    7:查询视图
       查询视图和查询表的操作一样,此时视图的列明和创建视图时的列名一致,不一定是原基表列名。
       select * from 视图名;
    8:对视图进行insert操作
       视图不包含任何数据,只是基表数据的逻辑映射。所以当对视图进行dml操作时,实际上是对基表数据的dml操作,对视图进行
      dml操作的原则是:
         1:简单视图能够执行dml操作,下列情况除外:在基表中定义了非空列,但是简单视图对应的select语句并没有包含这个
        非空列,导致这个非空列对视图不可见,这时无法对视图进行insert操作。
         2:若视图包含了函数,表达式,分组语句,distinct关键字或rownum伪劣,不允许执行dml操作
         3:dml操作不能违反基表的约束条件。
    9:创建具有check option约束的视图
       语法如下:
       create [or replace] view view_name [alias]
       as subquery
       with check option;
       其中with check option短语表示,通过视图所做的修改,必须在视图可见的范围内。
         1:假设insert,新增的记录在视图仍可查看;
         2:假设update,修改后的结果必须能通过视图查看到;
         3:假设delete,删除的记录仅限于当下视图能查到的记录;
    10:创建具有read only约束的视图
       对简单视图进行dml操作是合法的,但是不安全,如果没有在视图上进行都没了操作的必要,在建立视图时声明为只读来避免
       这种情况,保证视图对应的基表数据不会被非法修改。
       加入read only约束的语法
       create [or replace] view view_name [alias]
       as subquery
       with read only;
       此时对视图进行dml操作将会报错。
    11:创建复杂视图
       a:创建复杂视图必须为视图中的函数或者表达式定义别名;
       b:复杂视图不允许dml操作,不然会报错;
       c:删除视图drop view view_name,对视图的删除不会影响基表数据。
     
  • 相关阅读:
    [原]80386中断表
    [原]elf可执行连接文件格式
    [原]nasm语法
    VLAN基础配置及Access接口
    配置hybird接口
    配置Trunk接口
    [导入]Oracle常用技巧和脚本
    [导入]ORACLE 常用的SQL语法和数据对象
    [导入]Oracle 基本知识
    [导入]Oracle特殊包
  • 原文地址:https://www.cnblogs.com/zja001/p/10250427.html
Copyright © 2011-2022 走看看