视图

A、什么是视图

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

    1.1视图时一张虚拟表

    2.2不存在数据,存储查询语句,数据又查询语句动态生成

  2、如果我们编写了一个复杂的SQL去完成某些功能,为方便后期的调用,将sql语句封装带一个虚拟表,后期只需要调用虚拟表就可以获取对应SQL查询出的结果,这个虚拟表就叫做视图

  3、概念定义:用来创建视图的表加基表

  4、视图没有数据,底层基本表的数据搬运工

  5、注意点:

    1、视图是一个虚拟表

    2、不存数据,只存储语句,表中数据有查询语句动态获取

  6、好处

    1、简单:视图使用起来和表操作非常类似

    2、安全:方便进行权限控制(用户只能查询或修改他们在视图所能建到得到的数据,不能看到或用的底层基表的数据)

    3、数据独立

    总而言之,使用视图的大部分情况是为了保障数据安全性,提高性能查询效率

B、视图的基本用法(可以在视图的基础上再次创建视图)

  1、创建视图

    关键字:view

    语法:create view 视图名 as sql查询语句;

  2、使用语法

    select * from 视图名;

  3、修改视图

    a、  关键字 alter--(修改已存在的视图)

      语法:alter view 视图名 as sql查询语句;

    b、  关键字 replace--(如果十日不存在就创建 存在就修改)

      语法:create or replace view 视图名 as sql查询语句;

  4、删除语法

    关键字: drop

    a、语法:drop view 视图名;

    b、一次删除多个:drop view 视图名1,视图名2,...;

  5、查看视图结构语法

    关键字 show create

    语法:show create view 视图名;

  6、视图更新

    a、可以使用更新语句操作视图

    b、以下情况不能进行视图更新

      a.1 包含以下关键字的sql语句:分组函数、group by 、having、distanct、union和union all

      a.2 常量视图

      a.3 包含子查询

      a.4 如果视图字段不包含基表的非空字段,也是无法进行新增

    c、更新限制

      c.1  with check option

      c.2  对视图的操作无论更新前还是更新后都必须符合查询条件限制

      c.3  特别针对

        1、有where查询的视图

        2、update前后都必须符合where查询条件

        3、insert的值必须符合where查询条件

      c.4  一旦使用with check option; 来约束视图,那么在视图上更新的数据必须符合视图的查询条件

  视图:我们不生成数据,我们只是数据的搬运工

原文地址:https://www.cnblogs.com/dyxg/p/13628813.html