12、视图

148 阅读2分钟

13.1 概念

视图,虚拟表,从一个表或多个表中查询出来的表,作用和真实表一样,包含一系列带有行和列的数据。视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全。

13.2 视图特点

  • 优点

    • 简单化,数据所见即所得。
    • 安全性,用户只能查询或修改他们所能见到得到的数据。
    • 逻辑独立性,可以屏蔽真实表结构变化带来的影响。
  • 缺点

    • 性能相对较差,简单的查询也会变得稍显复杂。
    • 修改不方便,特别是复杂的聚合视图基本无法修改。

13.3 视图的创建

语法:CREATE VIEW 视图名 AS 查询数据源表语句;

13.3.1 创建视图
#创建 t_empInfo 的视图,其视图从 t_employees 表中查询到员工编号、员工姓名、员工邮箱、工资
CREATE VIEW t_empInfo 
AS 
SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,SALARY from t_employees;
13.3.2 使用视图
#查询 t_empInfo 视图中编号为 101 的员工信息
SELECT * FROM t_empInfo where employee_id = '101';

13.4 视图的修改

13.4.1 修改视图
#方式 1:如果视图存在则进行修改,反之,进行创建
CREATE  OR  REPLACE VIEW t_empInfo 
AS
SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,SALARY,DEPARTMENT_ID from t_employees;
​
#方式 2:直接对已存在的视图进行修改
ALTER VIEW t_empInfo
AS 
SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,SALARY from t_employees;

13.5 视图的删除

DROP VIEW 视图名

13.5.1 删除视图
#删除t_empInfo视图
DROP VIEW t_empInfo;

13.6 视图的注意事项

  • 注意:

    • 视图不会独立存储数据,原表发生改变,视图也发生改变。没有优化任何查询性能。

    • 如果视图包含以下结构中的一种,则视图不可更新(查询操作不更新)

      • 聚合函数的结果
      • DISTINCT 去重后的结果
      • GROUP BY 分组后的结果
      • HAVING 筛选过滤后的结果
      • UNION、UNION ALL 联合后的结