wangyilin
发布于 2023-05-11 / 15 阅读
0
0

mysql -视图

概述

定义

视图是一张虚拟存在的表,它并非是在数据库中真实存在的,它所使用的数据是在视图被使用时动态生成的。总的来说,视图是一条select语句所返回的结果集,因此对于视图的使用主要落在创建select语句上面。

视图所具有的优势

  • 简单:使用视图的用户不需要关心视图背后复杂的表的结构,关联关系,以及筛选条件,视图就是已经过滤好的复合条件的结果集。

  • 安全:使用视图的用户只能访问允许他们访问的结果集,表的访问限制不能到具体的行或者列,但是通过视图可以实现。

  • 数据独立:一旦视图被确定了那么后面表的结构变化就会对使用者屏蔽,列的增加对视图没有影响,列的更改或者减少也可以通过对视图的修改轻松改变。

视图基本操作

创建视图:

创建语法

CREATE [OR REPLACE] [AL GORITHM={UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name[(column_list)]
AS select_statement
[WITH[CASCADED|LOCAL] CHECK OPTION]

获取数据:

原始数据获取

视图创建以及查看数据:

image-20200826210818037

通过视图更新数据:

image-20200826211011222

注意:由于视图中的数据并非静态而是动态生成的,因此对于视图中数据的更新实际上是对于源表中数据的更新

可以将视图作为一张真正的表来进行查询操作,所有能够在真正的表中使用的查询都能够用于视图

修改视图

ALTER [AL GORITHM={UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name[(colum_list)]
AS select_statement
[WITH[CASCADED|LOCAL] CHECK OPTION]

选项:

WITH[CASCADED|LOCAL] CHECK OPTION 决定了是否允许更新数据使记录不满足视图的条件

LOCAL: 只要满足本视图的条件就允许更新

CASCADED: 必须满足所有针对该视图的所有条件才可以更新。\该选项为默认值

注意:尽管可以通过视图更新数据,但是我们仍然不建议通过视图进行这些操作,因为视图的作用在于方便查询而非更新。

查看视图

从MySQL5.1版本开始,通过show tables 命令不仅仅可以显示表的信息,也会显示视图的信息,同时不再有一个专门的命令用于查看视图,在层级上视图与表同级。

SHOW TABLES 命令显示表与视图

image-20200826213008649

同样,在使用SHOW TABLE STATUS 命令的时候,不但可以显示表的信息,同时也可以显示视图的信息。

image-20200826213301617

删除视图

DROP VIEW [IF EXISTS] view_name



评论