视图是MySQL中不存储数据、仅保存SELECT语句定义的虚拟表,查询时动态执行语句获取基表数据,具有虚拟性、动态同步、无物理存储和命名唯一等特点。

视图是 MySQL 中一种虚拟的表,它本身不存储数据,而是保存一条 SELECT 查询语句的定义。每次查询视图时,数据库都会实时执行这条语句,从底层的一张或多张基础表中动态提取数据。
视图的核心特点
• 虚拟性:视图在磁盘上没有对应的数据文件,只存 SQL 语句(即“视图定义”),数据始终来自基表。
• 动态同步:基表数据增删改后,视图查询结果自动更新,无需手动刷新。
• 无物理存储:不占用额外空间,也不支持添加索引、触发器或默认值。
• 命名唯一:视图名在同一数据库中必须唯一,不能与表名冲突。
视图和普通表的区别
• 表是真实的数据容器,有物理行和列;视图只是“窗口”,看到的是查询结果的逻辑快照。
• 表可直接写入数据;视图虽支持部分增删改(需满足可更新条件),但日常主要用作查询简化与权限控制。
• 表结构变更直接影响所有操作;视图可通过重定义屏蔽基表变化,提升应用稳定性。
为什么需要视图
• 简化复杂查询:把多表 JOIN、聚合计算、条件过滤等封装成一个名字,后续只需 SELECT * FROM view_name。
• 控制数据访问:例如只暴露员工姓名、部门,隐藏工资、身份证号等敏感字段。
• 统一数据口径:不同业务模块共用同一视图,避免各自写重复逻辑,保障结果一致性。
• 解耦逻辑与物理结构:当基表字段重命名或拆分时,只需调整视图定义,上层应用代码不用动。
基础操作示例
• 创建:CREATE VIEW emp_dept AS SELECT e.name, d.dept_name FROM employees e JOIN dept d ON e.dept_id = d.id;
• 查询:SELECT * FROM emp_dept;
• 删除:DROP VIEW emp_dept;
• 修改(替换):CREATE OR REPLACE VIEW emp_dept AS ...










