MySQL(9):视图

概述

视图是从一个或多个表中的导出的,视图的行为与表非常相似,但视图是一个虚拟表。在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录。

视图是一个虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已经存在的视图的基础上定义

当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化;同时,若基本表的数据发生变化,这种变化也可以自动地反映到视图中。

视图的作用

简单化

视图不仅可以简化用户对数据的理解,也可以简化他们的操作。

安全性

通过视图,用户可以被限制在数据的不同子集上:

  1. 使用权限可被限制在基表的行的子集上。
  2. 使用权限可被限制在基表的列的子集上。
  3. 使用权限可被限制在基表的行和列的子集上。
  4. 使用权限可被限制在多个基表的连接所限定的行上。
  5. 使用权限可被限制在基表中的数据的统计汇总上。
  6. 使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。

逻辑数据独立性

视图可帮助用户屏蔽真实表结构变化带来的影响。

 

创建视图

创建试图使用CREATE VIEW语句,基本语法格式如下:

CREATE [OR REPLACE][ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]

    VIEW view_name [(column_list)]

    AS SELECT _statement

    [WITH [CASCADED | LOCAL] CHECK OPTION]

ALGRITHM的取值有3个,分别是UNDEFINED | MERGE | TEMPTABLE,UNDEFINED表示MySQL将自动选择算法;MERGE表示将使用的视图语句与视图定义合并起来,使得视图定义的某一部分取代语句对应的部分;TEMPTABLE表示将视图的结果存入临时表,然后用临时表来实行语句。

CASCADED与LOCAL为可选参数,CASCADED为默认值,表示更新视图时要满足所有相关视图和表的条件;LOCAL表示更新视图时满足该视图本身定义的条件即可。

查看视图

DESCRIBE查看视图基本信息

DESCRIBE 视图名; 

DESCRIBE等同于DESC,所以也可以写成:

DESC 视图名;

 SHOW TABLE STATUS语句查看视图基本信息

SHOW TABLE STATUS LIKE ‘视图名’;

 SHOW CREATE VIEW语句查看视图详细信息 

SHOW CREATE VIEW 视图名;

在views表中查看视图详细信息

SELECT * FROM information_schema.views;

修改视图

CREATE OR REPLACE VIEW语句修改视图

CREATE [OR  REPLACE][ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

     VIEW view_name[(column_list)]

     AS SELECT_statement

     [WITH[CASCADED | LOCAL] CHECK OPTION]

可以看到,修改视图的语句和创建视图的语句是一样的。 

ALTER语句修改视图

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

     VIEW view_name[(column_list)]

     AS SELECT_statement

     [WITH[CASCADED | LOCAL] CHECK OPTION]

更新视图

当视图中包含有如下内容时,视图的更新操作将不能被执行:

  1. 视图中不包含基表中被定义为非空的列。
  2. 在定义视图的SELECT语句后的字段列表中使用了数学表达式。
  3. 在定义视图的SELECT语句的字段列表中使用聚合函数。
  4. 在定义视图的SELECT语句中使用了DISTINCT,UNION,TOP,GROUP BY或HAVING子句。

删除视图

DROP VIEW [IF EXISTS]

     view_name[,view_name]...

     [RESTRICT | CASCADE]

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值