视图
2026/9/12大约 2 分钟
视图
1. 是什么
1.1 概念
视图是虚拟表,是从一个表或多个表中查询出来的表,作用和真实表一样,包含一系列带有行和列的数据。视图中,用户可以使用 SELECT 语句查询数据,也可以使用 INSERT、UPDATE、DELETE 修改记录。视图可以使用户操作方便,并保障数据库系统安全。
1.2 特点
优点:
- 简单化,数据所见即所得;
- 安全性,用户只能查询或修改他们所能见到的数据;
- 逻辑独立性,可以屏蔽真实表结构变化带来的影响。
缺点:
- 性能相对较差,简单的查询也会变得稍显复杂;
- 修改不方便,特别是复杂的聚合视图基本无法修改。
2. 视图的操作
2.1 创建视图
# 语法
CREATE VIEW 视图名 AS 查询语句;
# 创建emp_info视图,通过视图从emp表中查询员工编号、姓名、总工资
CREATE VIEW emp_info
AS
SELECT empno '编号', ename '姓名', sal+IFNULL(comm, 0) '总工资' FROM emp;2.2 使用视图
# 查询编号为1003的员工信息
SELECT * FROM emp_info WHERE 编号=1003;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;2.4 删除视图
删除视图不会影响原表。
# 语法
DROP VIEW 视图名;
DROP VIEW emp_info;2.5 注意事项
视图不会独立存储数据,原表发生改变,视图也发生改变。视图没有优化任何查询性能。
如果视图包含以下结构中的一种,则视图不可更新:
- 聚合函数的结果;
- DISTINCT 去重后的结果;
- GROUP BY 分组后的结果;
- HAVING 筛选过滤后的结果;
- UNION、UNION ALL 联合后的结果。
