视图

九、视图

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 视图名,视图名...;
上一篇:山川湖海 - Android无障碍功能优化实践


下一篇:MySQL进阶篇