• MySQL数据库8(二十)视图


    视图

    视图概念

    视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

    关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询需要将多个表连接起来进行查询任务。对于复杂的查询事件,每次查询都需要编写MySQL代码效率低下。为了解决这个问题,数据库提供了视图(view)功能。

     

    视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询。

    视图基本操作

    创建视图

    视图的本质是SQL指令(select 语句)

    基本语法:create[or repalce] view 视图名字 as select 指令 [with check option]; //可以是单表数据,也可以是连接查询,联合查询或者子查询

     

    表里面不能出现同名字段所以会显示重复。

    查看视图:视图本身是虚拟表,所有关于表的一些操作都适合视图

     

    使用视图

    视图是一张虚拟表,可以直接把视图当做“表”操作,但是视图本身没有数据,是临时执行select语句得到对应的结果。视图主要用于查询操作。

    基本语法:select 字段列表 from 视图名字[各种子句];

     

    修改视图

    修改视图:本质是修改视图对应的查询语句

    基本语法:alter view 视图名字 as 新select指令;

     

    删除视图

    基本语法:drop view 视图名字;

    DML操作视图

    因为视图本身没有数据,因此对视图进行的dml操作最终都体现在基表中。视图的DML操作,不是所有的视图都可以做DML操作。

    有下列内容之一,视图不能做DML操作:

    ①select子句中包含distinct

      ②select子句中包含组函数

      ③select语句中包含group by子句

      ④select语句中包含order by子句

      ⑤select语句中包含union 、union all等集合运算符

      ⑥where子句中包含相关子查询

      ⑦from子句中包含多个表

      ⑧如果视图中有计算列,则不能更新

      ⑨如果基表中有某个具有非空约束的列未出现在视图定义中,则不能做insert操作

    with check option

    含义:对视图所做的DML操作的结果,不能违反视图的WHERE条件的限制

    嵌套视图:定义在另一个视图的上面的视图

    mysql> create view v_ear_veterans

        -> as

        -> select * from v_veterans

       -> where JOINED < 1980;

    使用WITH CHECK OPTION约束时,(不指定选项则默认是CASCADED)

    可以使用CASCADED或者 LOCAL选项指定检查的程度:

      ①WITH CASCADED CHECK OPTION:检查所有的视图

        例如:嵌套视图及其底层的视图

      ②WITH LOCAL CHECK OPTION:只检查将要更新的视图本身

        对嵌套视图不检查其底层的视图 

  • 相关阅读:
    168. Excel Sheet Column Title
    171. Excel Sheet Column Number
    264. Ugly Number II java solutions
    152. Maximum Product Subarray java solutions
    309. Best Time to Buy and Sell Stock with Cooldown java solutions
    120. Triangle java solutions
    300. Longest Increasing Subsequence java solutions
    63. Unique Paths II java solutions
    221. Maximal Square java solutions
    279. Perfect Squares java solutions
  • 原文地址:https://www.cnblogs.com/sun-yanglu/p/9612838.html
Copyright © 2020-2023  润新知