九、视图
1 介绍
MySQL 从 5.0.1 版本开始提供了视图功能。可以把它理解为一种虚拟存在的表,行和列的数据来自自定义视图的查询中使用的表,并且是在使用视图的时候动态生成的,只保存了SQL的逻辑,不保存查询结果。
视图使开发者只关心感兴趣的某些特定数据和所负责的特定任务,只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高了数据库中数据的安全性。
视图的特点如下:
- 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。
- 视图是由基本表(实表)产生的表(虚表)。
- 视图的建立和删除不影响基本表。
- 对视图内容的更新(添加,删除和修改)直接影响基本表。
- 当视图来自多个基本表时,不允许添加和删除数据。
视图的优点:
- 提高了sql语句重用性,效率高
- 和表实现了分离,提高了安全性、
- 逻辑数据独立性。视图对重构数据库提供了一定程度的逻辑独立性
2 使用场景
视图根本用途:简化sql查询,提高开发效率。
下面是视图的常见使用场景:
- 重用SQL语句;
- 简化复杂的SQL操作。在编写查询后,可以方便的重用它而不必知道它的基本查询细节;
- 使用表的组成部分而不是整个表;
- 保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限;
- 更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。
3 创建视图
语法:
CREATE VIEW 视图名
AS
查询语句;
示例:
# 查询姓名中包含 a 字符的员工名、部门名和工种信息
CREATE VIEW v1
AS
SELECT
e.last_name,
d.department_name,
j.job_title
FROM
employees e
INNER JOIN departments d ON e.department_id = d.department_id
INNER JOIN jobs j ON e.job_id = j.job_id;
SELECT * FROM v1 WHERE last_name like '%a%';
4 查看视图
语法:
DESC 视图名;
# 或者
SHOW CREATE VIEW 视图名;
5 修改视图
语法:
ALTER VIEW 视图名
AS
查询语句;
6 删除视图
语法:
DROP VIEW 视图名,视图名...;