MySQL初级-17-视图

本文最后更新于:2020年7月27日 下午

mysql Ver 14.14 Distrib 5.5.62

文中案例所用数据库下载

17.1 含义

视图是一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的, 只保存了sql逻辑,不保存查询结果 。

适合用于多个需要同样结果的查询或比较复杂的SQL查询语句。

17.2 优点

  1. 重用SQL语句。
  2. 简化复杂的SQL操作。
  3. 保护数据,提高安全性。

17.3 创建视图

17.3.1 语法

CREATE VIEW 视图名
AS
查询语句;

17.3.2 示例

  1. 创建视图,用来查询姓名中包含字母a的员工名、部门名和工种信息。

    CREATE VIEW vu1
    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;
  1. 创建视图,用来查询各部门的平均工资,结果按工资逆序。

    CREATE VIEW vu2
    AS
    SELECT AVG(e.salary) 平均工资,d.department_name 部门名
    FROM employees e
    INNER JOIN departments d
    ON d.department_id=e.department_id
    GROUP BY e.department_id
    ORDER BY 平均工资 DESC;

17.4 修改视图

方式一:

CREATE OR REPLACE VIEW 视图名
AS
修改后的查询语句;

方式二:

ALTER VIEW 视图名
AS
修改后的查询语句;

17.5 删除视图

DROP VIEW [IF EXISTS] 视图名[,视图名,视图名];

17.6 查看视图

  1. 查看视图结构

    DESC 视图名;
  2. 查看视图逻辑

    SHOW CREATE VIEW 视图名;

17.7 更新视图

视图的可更新性和视图中查询的定义有关,以下类型的视图是不能更新的。

  1. 包含关键字:分组函数、DISTINCT、GROUP BY、HAVING、UNION[ALL]。
  2. 常量视图。
  3. SELECT中包含子查询。
  4. JOIN
  5. FROM的是一个不能更新的视图。
  6. WHERE子句的子查询引用了FROM子句中的表。

一般不建议使用视图进行更新。

17.8 视图与表对比

  1. 视图的创建语法的关键字是CREATE VIEW;表的创建语法关键字是CREATE TABLE。
  2. 视图不占用实际的物理空间,只保存了SQQL逻辑;表占用了实际的物理空间,用来保存数据。
  3. 视图和表都支持增删改查,但视图一般不能增删改。

版权声明:自由转载-非商用-非衍生-保持署名 Creative Commons BY-NC-ND 3.0 协议,转载请注明出处!

 目录