# 视图

视图: 虚拟机表 ,将查询出的数据用视图的形式存起来,以便于再次查询

create view v_name as select ...

# 一、是什么

# 1.1、概念

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

# 1.2、特点

  • 优点

  • 简单化,数据所见即所得。

  • 安全性,用户只能查询或修改他们所能见到得到的数据。

  • 逻辑独立性,可以屏蔽真实表结构变化带来的影响。

  • 缺点

  • 性能相对较差,简单的查询也会变得稍显复杂。

  • 修改不方便,特变是复杂的聚合视图基本无法修改。

# 二、视图的操作

# 2.1、创建视图

# 语法
CREATE VIEW 视图名 AS 查询语句;

# 创建emp_info视图,通过视图从emp表中查询员工编号、姓名、总工资
CREATE VIEW emp_info
AS
SELECT empno '编号', ename '姓名', sal+IFNULL(comm, 0) '总工资' FROM emp;
1
2
3
4
5
6
7

# 2.2、使用视图

# 查询编号为1003的员工信息
SELECT * FROM emp_info WHERE 编号=1003;
1
2

# 2.3、修改视图

# 语法 方式1
CREATE OR REPLACE VIEW 视图名 AS 查询语句;
# 语法 方式2
ALTER VIEW 视图名 AS 查询语句;

CREATE OR REPLACE VIEW emp_info
AS
SELECT empno '编号', ename '姓名', sal '基本工资' FROM emp;

ALTER VIEW emp_info
AS
SELECT empno '编号', ename '姓名', sal '基本工资' FROM emp;
1
2
3
4
5
6
7
8
9
10
11
12

# 2.4、删除视图

删除视图不会影响原表

# 语法
DROP VIEW 视图名;

DROP VIEW emp_info;
1
2
3
4

# 2.5、注意事项

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

如果视图包含以下结构中的一种,则视图不可更新

  • 聚合函数的结果
  • DISTINCT 去重后的结果
  • GROUP BY 分组后的结果
  • HAVING 筛选过滤后的结果
  • UNION、UNION ALL 联合后的结果
上次更新: 2024/4/13