码迷,mamicode.com
首页 > 数据库 > 详细

MySQL<视图>

时间:2017-10-04 15:20:36      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:mys   with   statement   独立性   帮助   sel   upd   行数据   带来   

视图

  视图概述

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

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

  优点

    简化查询语句

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

安全性

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

    逻辑数据独立性

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

视图管理

  创建视图的语法格式

    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 <视图名>

    应用案例--视图的应用

MySQL<视图>

标签:mys   with   statement   独立性   帮助   sel   upd   行数据   带来   

原文地址:http://www.cnblogs.com/justdoitba/p/7620193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!