MySQL<视图>

视图

  视图概述

    视图是指从一个或几个基本表中导出的表,可以像操作基本表一样操作视图。视图中只存放视图定义而不存放视图对应的数据。

    如果基本表的数据发生变化,从视图中查询出的数据也会发生变化。因此可以把视图认为是一个虚拟表。

  优点

    简化查询语句

        日常开发中我们可以将经常使用的查询定义为视图,从而使用户避免大量重复的操作。

安全性

        通过视图用户只能查询和修改他们所能见到的数据,数据库中的其他数据则既看不到也取不到。

    逻辑数据独立性

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

视图管理

  创建视图的语法格式

    create view<视图名>[(<列名>...)] as 子查询 [WITH CHECK OPTION]

    子查询可以出现任意select语句,但通常在查询语句中不允许出现Order by和DISTINCT

  在单表上创建视图

  在多表上创建视图

  查看视图

    使用DESCRIBE语句可以查看视图的字段信息

    DESCRIBE 视图名;

    或DESC 视图名;

    使用SHOW TABLE STATUS语句可以查看视图的基本信息

    SHOW TABLE STATUS LIKE '视图名'

    使用SHOW CREATE VIEW语句不仅可以查看创建视图时的定义语句,还可以查看视图的字符编码

    SHOW CREATE VIEW 视图名;

  修改视图

    由于视图是不实际存储数据的虚拟表,因此更新视图的操作,最终要转化为对基本表的更新操作。为了防止对视图进行数据更新时,对不属于视图范围的基本表数据进行操作,可以在定义视图时加上WITH CHECK OPTION子句。

    我们发现表中数据发生了改变。由于视图多是给用户进行浏览的,并不需要其进行修改,所以这样做很不安全。所以我们一般在SQL语句末尾加上WITH CHECK OPTION子句,这样用户就不能随意进行修改了。

    1、使用CREATE OR REPLACE VIEW语句修改视图

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

      VIEW view_name [(column_list)]

      AS SELECT_statement

      [WITH[CASCADED | LOCAL] CHECK OPTION]

    2、使用ALTER语句修改视图

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

      VIEW view_name [(column_list)]

      AS SELECT_statement

      [WITH[CASCADED | LOCAL] CHECK OPTION]

  更新视图

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

    视图中不包含基本表中被定义为非空的列。

    在定义视图的SELECT语句后的字段列表中使用了数学表达式。

    在定义视图的SELECT语句后的字段列表中使用聚合函数。

    在定义视图的SELECT语句中使用了DISTINCT,UNION,TOP,GROUP BY或HAVING子句。

    使用UPDATE语句更新视图

    使用DELETE语句更新视图

    使用INSERT语句更新视图

  删除视图

    只能删除视图的定义,不会删除数据。

    drop view <视图名>

    应用案例--视图的应用

转载于:https://www.cnblogs.com/justdoitba/p/7620193.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值