美文网首页
视图(view)

视图(view)

作者: 咸鱼有梦想呀 | 来源:发表于2017-10-22 21:07 被阅读0次

    一、视图(view)

    是一种结构(有行有列)但是没有结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义的,而是从对应的基表中产生。

    1.创建视图

    create view 视图名 as select 语句;

    select语句可以是普通查询,连接查询,联合查询,子查询。

    (1)创建单表视图
    (2)创建多表视图

    创建视图:单表+多表

    2.查看视图

    查看试图:查看视图结构

    • show tables;
    • desc 视图名;
    • show create table 视图名;

    3.使用视图
    使用视图主要是为了查询。将视图当作表一样查询即可。
    视图的执行:其实本质就是执行封装的select语句。

    4.修改视图
    视图本身不可修改,但是视图的来源可以修改

    修改视图:修改视图本身的来源语句(select语句)
    alter view 视图名 as 新的 select 语句;

    修改视图

    5.删除视图

    drop view 视图名;

    删除视图

    6.视图意义

    • 视图可以节省sql语句:将一条复杂的查询语句使用视图进行保存,之后可以直接对视图进行操作。
    • 数据安全:视图操作主要针对查询,如果对视图结构进行处理(删除),不会影响基表数据(相对安全)
    • 视图往往是在大系统中使用,而且是多系统使用。对外提供有效数据,隐藏关键的数据。
    • 视图可以更好的进行权限控制

    二、视图数据操作

    1.新增数据
    视图新增就是直接对视图进行数据新增

    • 多表视图不能新增数据
    • 单表视图可以插入数据。但是视图中包含的字段必须有基表中所有不能为空(或者没有默认值)字段。
    • 视图是可以向基表插入数据的
    视图向基表插入数据

    2.删除数据

    • 多表视图不能删除数据
    • 单表视图删除数据
    单表删除数据

    3.更新数据

    • 多表视图更新数据
    多表视图更新数据
    • 更新限制(with check option)
      如果对视图在新增的时候,限定了某个字段有限制:那么在对视图进行数据更新的操作时,系统会验证——保证更新后,数据依然可以被实体查出来,否则不让更新。
    更新限制

    三、视图算法

    视图算法:系统对视图以及外部查询视图的select语句的一种解析方式。
    当查询信息时遇到了相同的信息,系统会自动选其中一个(看图3.1)

    3.1

    当这种情况发生如何解决?
    因此就有了视图算法

    视图算法

    • undefined:未定义(默认的),这不是一种实际算法,只是用来告诉系统视图没有定义算法,系统自己定义。
    • temptable:临时表算法。系统先执行视图的select语句,后执行外部查询语句
    • merge:合并算法。系统先将视图对应的select语句与外部的视图查询语句的select语句进行合并,然后执行(效率高)

    算法指定:在创建视图的时候
    create algorithm = 制定算法 view 视图名 as select 语句;

    临时算法

    视图算法选择
    如果视图的select语句中包含一个查询子句(where,group by,order by,having,limit)而且很有可能顺序比外部的查询语句要靠后,使用算法temptable,其他情况可以不用指定(默认即可)。

    相关文章

      网友评论

          本文标题:视图(view)

          本文链接:https://www.haomeiwen.com/subject/umeguxtx.html