MySQL 视图

MySQL视图概述

MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。

数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。

视图的优点

视图与表在本质上虽然不相同,但视图经过定义以后,结构形式和表一样,可以进行查询、修改、更新和删除等操作。同时,视图具有如下优点:

1  定制用户数据,聚焦特定的数据

在实际的应用过程中,不同的用户可能对不同的数据有不同的要求。

例如,当数据库同时存在时,如学生基本信息表、课程表和教师信息表等多种表同时存在时,可以根据需求让不同的用户使用各自的数据。学生查看修改自己基本信息的视图,安排课程人员查看修改课程表和教师信息的视图,教师查看学生信息和课程信息表的视图。

2 简化数据操作

在使用查询时,很多时候要使用聚合函数,同时还要显示其他字段的信息,可能还需要关联到其他表,语句可能会很长,如果这个动作频繁发生的话,可以创建视图来简化操作。

3 提高数据的安全性

视图是虚拟的,物理上是不存在的。可以只授予用户视图的权限,而不具体指定使用表的权限,来保护基础数据的安全。

4 共享所需数据

通过使用视图,每个用户不必都定义和存储自己所需的数据,可以共享数据库中的数据,同样的数据只需要存储一次。

5 更改数据格式

通过使用视图,可以重新格式化检索出的数据,并组织输出到其他应用程序中。

6 重用 SQL 语句

视图提供的是对查询操作的封装,本身不包含数据,所呈现的数据是根据视图定义从基础表中检索出来的,如果基础表的数据新增或删除,视图呈现的也是更新后的数据。视图定义后,编写完所需的查询,可以方便地重用该视图。

注意事项

创建视图需要足够的访问权限。
创建视图的数目没有限制。
视图可以嵌套,即从其他视图中检索数据的查询来创建视图。
视图不能索引,也不能有关联的触发器、默认值或规则。
视图可以和表一起使用。
视图不包含数据,所以每次使用视图时,都必须执行查询中所需的任何一个检索操作。
如果用多个连接和过滤条件创建了复杂的视图或嵌套了视图,可能会发现系统运行性能下降得十分严重。
因此,在部署大量视图应用时,应该进行系统测试。

创建视图

语法 :

CREATE VIEW <视图名> AS <SELECT语句>

示例

CREATE VIEW class2_students as SELECT * FROM students WHERE class_id = 2

查询视图

语法 :

# 查看全部视图
SELECT * FROM information_schema.views;
# 查看单个视图详情
SHOW CREATE VIEW class2_students;

删除视图

语法 :

DROP VIEW <视图名1> [ , <视图名2> …]

修改视图

语法 :

ALTER VIEW <视图名> AS <SELECT语句>

使用视图

把视图当成一张数据表,执行 select 语句即可 :

SELECT * from class2_students;