MySQL

您所在的位置:网站首页 数据库中只存放视图的 MySQL

MySQL

2023-10-28 08:48| 来源: 网络整理| 查看: 265

1.MySQL–视图

视图是数据库中常用对象之一,它的内容是数据库部分数据或以聚合等方式重构的数据。

只存放视图的定义,不存放数据。不存储数据,所以视图是一个虚表。 因为数据存在基本表中,基本表的数据发生变化,视图查询的结果集会随之改变。

视图的数据来源可以是一个表,也可以是多个表。定义好的视图可以和基本表一样被查询、被删除。

1.1 视图定义

在这里插入图片描述 在这里插入图片描述 其中,AS后的子查询可以是任意具体的数据库系统支持的SELECT语句。语句WITH CHECK OPTION表示通过视图进行更新操作时要保证更新的数据满足子查询的条件表达式。

组成视图的列名要么省略,要么全部指定。如果省略,则视图的列名就由子查询中的列名组成。

在下列情况下,必须指定视图列名:

子查询的某个目标列是聚合函数或列表达式;多表连接时出现同名列作为视图的列;需要在视图中指定新列名替代子查询列名。 1.2 视图定义示例

建立视图所需要的个表的架构 在这里插入图片描述

1.2.1 示例1:建立咖啡类商品的视图

在这里插入图片描述

1.2.2 示例2:建立MIS专业学生的视图,并要求通过视图完成修改与插入操作时视图仍只有MIS专业学生

在这里插入图片描述

本例使用WITH CHECK OPTION语句对以后通过视图进行插入、修改的数据进行限制。均要求满足Major='MIS'条件。

1.2.3 示例3:建立购买了咖啡类商品的学生视图

视图可以定义在已经定义的视图上,也可以建立在表与视图的连接上

在这里插入图片描述 本例基于视图coffee建立了新的视图

1.2.4 示例4:建立保存商品编号与销售额的视图。

定义基本表时,为了减少数据冗余,表中只存放基本数据,在基本数据上的聚合运算、列表达式运算等一般不予存储。可以定义视图存储这些运算结果,便于使用。

在这里插入图片描述 在视图中必须使用新的列名,这里取名“Sumsale”。

1.2.5 示例5:建立销售额前5的商品视图。

视图子查询也可以用TOP、ORDER BY谓词。 在这里插入图片描述

1.4 删除视图

SQL使用DROP VIEw语句删除视图,一般格式为:

在这里插入图片描述

1.4.1 示例∶删除视图Coffee。

在这里插入图片描述 需要注意的是,因为视图Buy_coffee部分建立在Coffee上的,所以删除Coffee后,查询Buy_coffee不会成功。对于建立在基本表上的视图也一样,如果基本表结构发生变化甚至被删除,则查询视图也会报错。

1.5 查询视图

和基本表的查询语句类似,只是把表名的位置换成视图名就可以

1.6 更新视图

更新视图是通过视图来插入、删除、修改数据。由于视图不存储数据,通过视图更新数据最终要转换为对基本表的更新。

1.6.1 更新视图示例:

在Buy_coffee视图中插入一个新的学生信息,其中学号为s09,姓名 为程伟,出生年为1993,其余为空 在这里插入图片描述 se9学生是新加入的,没有购买过咖啡,并不属于视图Buy_coffee包含的数据。为防止这种通过视图更新不属于视图范围的数据,可以在定义视图时添加WITH CHECKOPTION子句。

1.7 视图作用 简化查询数据 利用视图,用户可以把经常使用的连接查询、聚合查询等比较复杂的查询定义为视图,这样执行相同查询时,不必重新编写复杂的语句。此时,视图向用户隐藏了对复杂的操作,降低了用户操作数据的要求。 使用户多角度看待同一问题 对同一数据,不同用户可以根据需要提取基本表各属性,或者对各属性列进行分组、聚合运算等操作,从而组成新的逻辑对象,提高了数据库应用的灵活性。 提供一定程度的逻辑独立性 当用户对数据库进行增加新的关系或添加新的字段等数据库重构行为时,会影响应用程序的运行。使用视图构造数据库重构之前的逻辑关系,可以保持用户应用程序不变,从而保持了数据逻辑独立性。 提供数据库的安全性 可以在设计数据库时对不同用户定义不同的视图,使各级用户只能看权限范围内的数据。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3