数据库_视图
一、视图介绍
-
视图是虚拟表,只保存查询语句,不存储真实数据。数据来自一个或多个基表(物理表),访问视图时才动态查询生成结果
-
核心特点
- 虚表:数据库存的是
SELECT定义,不是数据;删除视图不会删基表数据 - 动态:基表数据变,视图查询结果自动跟着变
- 使用方式:和普通表一样,可以
SELECT;但不是所有视图都支持增删改(多表连接、聚合函数的视图一般不能更新)
- 作用
- 简化查询:把多表 JOIN、复杂聚合封装成视图,用户直接查视图
- 数据安全:只开放部分字段 / 行,隐藏敏感信息(手机号、薪资),不给基表权限
- 逻辑独立:底层表结构调整,上层应用可以继续用视图,不用改代码
- 视图的优点✅️
- 提高查询效率:数据库中的数据查询非常复杂,可以简化sql语句
- 安全:有些保密字段可以通过创建视图限制用户对某些字段进行操作
- 简单:不需要关心后面对应的表结构
- 视图的缺点❌️
- 性能差:把视图查询的结果转换成对表的查询
- 修改限制:修改视图数据,必须转换为对基础表的修改
- 特点☆
- 视图是由基础表产生的虚拟表【基础班删除,视图就无效】
- 视图的创建不影响基础表【创建多个视图,都不影响基础表】
- 删除视图不影响基础表
- 视图删除数据,基础表也同时删除数据【合的表无法删除,单表可以删除】
- 基础表删除数据,视图也删除数据
- 视图不能修改表字段,不能对表字段删除
二、sql语句
- 创建视图:
create view 视图名 as(select sql语句) - 查看所有表【物理表中没有视图】:
show tables - 查询视图:
select * from 视图名 - 查看创建好的视图:
show create view 视图名 - 删除视图:
drop view 视图名
三、问题
-
什么是视图
视图是虚拟表,数据库只保存视图对应的查询语句,不存储真实数据。数据来源于基表,查询视图时动态从基表获取数据。 -
视图是用来干什么的【作用】
- 简化复杂查询,封装多表关联逻辑,可重复使用。
- 数据安全:只开放部分字段 / 行,隐藏敏感信息。
- 逻辑解耦:底层基表改动,上层业务代码不用修改。
- 统一数据统计口径,保证多处查询结果标准一致。
一句话总结:视图就是封装好的查询,用来简化查询、控制数据可见范围、统一统计口径。
- 视图的优缺点
- 优点
- 简化查询:将复杂多表关联 SQL 封装,用户直接查询视图,不用重复编写复杂语句。
- 数据安全:可以只开放部分字段或部分行,屏蔽敏感数据,实现权限控制。
- 逻辑独立:底层基表结构发生变化时,上层应用代码无需修改,仅调整视图定义即可。
- 统一口径:相同统计逻辑多处复用,保证不同业务查询出来的数据标准一致。
- 缺点
- 性能隐患:视图不存储真实数据,每次查询都会执行底层 SQL;多层嵌套视图容易导致查询效率低下。
- 更新受限:只有简单单表视图支持增删改;多表连接、带聚合函数、distinct 的视图不能更新。
- 排障困难:多层嵌套视图,无法直观看到底层逻辑,出现问题不容易定位。
- 依赖基表:视图依赖基础表,基表删除或字段变更,视图会失效。
一句话总结:视图简化查询、保护数据;但多层嵌套性能差,更新有较多限制。
- 如何创建视图
create view 视图名 as(sql语句) - 如何删除一个视图
drop view 视图名

浙公网安备 33010602011771号