zoukankan      html  css  js  c++  java
  • SQL语言之视图(六)

    三级模式两层映像结构 

    对应概念模式的数据在SQL中被称为基本表(Table),而对应外模式的 数据称为视图(View)。视图不仅包含外模式,而且包含其E-C映像

    视图需要“先定义,再使用”

    定义视图

      create   view 视图名  [(列名[,列名] …)]   

        as 子查询 [with check option]

    如果视图的属性名缺省,则默认为子查询结果中的属性名;也可以显式指 明其所拥有的列名。

    withcheckoption指明当对视图进行insert,update,delete时,要检查 进行insert/update/delete的元组是否满足视图定义中子查询中定义的条件 表达式

    #定义一个视图CompStud为计算机系的学生,通过该视图可以 将Student表中其他系的学生屏蔽掉 
    Create  View  CompStudAS ( 
    Select   *  From  Student Where  dept_id  in
    ( Select   id From  Dept Where   Dept.name= ‘计算机’) 
    ) ;

    SQL视图更新

    是比较复杂的问题,因视图不保存数据,对视图的更新 最终要反映到对基本表的更新上,而有时,视图定义的映射不是可逆的

    create  view  S_G(S#, Savg) as  ( select   S#,AVG(Score) from   SCgroup  by   S#)

    视图的更新需要id

    SQL视图更新的可执行性

    如果视图的select目标列包含聚集函数,则不能更新

    如果视图的select子句使用了unique或distinct,则不能更新

    如果视图中包括了groupby子句,则不能更新

    如果视图中包括经算术表达式计算出来的列,则不能更新 

    如果视图是由单个表的列构成,但并没有包括主键,则不能更新 

    对于由单一Table子集构成的视图,即如果视图是从单个基本表使用选 择、投影操作导出的,并且包含了基本表的主键,则可以更新

    撤消视图  Drop View 视图名

     

  • 相关阅读:
    最近看到C#里面的抽象类和接口,还有索引器。
    Memcached服务端自动启动
    python操作MySQL数据库
    Linux开放端口
    关于数组的几道面试题
    这群超酷的开发者,是如何轻松搞定软件开发?
    五分钟开发好你的第一个人工智能应用
    Case Study: 技术和商业的结合点在哪里?
    【江湖趣事】话说开源界和微软的那些往日恩怨
    评微软收购GitHub
  • 原文地址:https://www.cnblogs.com/ic710/p/11265775.html
Copyright © 2011-2022 走看看