数据视图学习笔记
数据库数据视图章节学习笔记
一、视图的基本概念
1. 定义
视图(View)是数据库中一种虚拟表,是基于一个或多个基础表(也可基于其他视图)查询结果构建的逻辑数据表。
视图本身不存储真实数据,数据库中仅保存视图的定义(对应的查询SQL语句),所有数据均来源于底层的基础表。当用户查询视图时,数据库会动态执行视图绑定的查询语句,从基础表中实时获取数据。
2. 核心本质
- 物理层面:无独立存储,不占用磁盘数据空间,仅存储视图结构定义;
- 逻辑层面:和普通数据表使用方式一致,支持查询、有限制的增删改操作,可像实体表一样用于日常数据操作。
3. 视图与基础表的区别
对比维度 基础表(实体表) 视图(虚拟表) 数据存储 真实存储数据和表结构 仅存储结构定义,无真实数据
存储空间 占用物理磁盘空间 几乎不占用数据存储空间
数据更新 直接更新,永久生效 依赖底层表,更新视图本质是更新基础表
创建删除 结构删除则数据全部丢失 删除视图仅删除定义,不影响基础表数据
二、视图的核心特点与优缺点
1. 主要特点
1. 数据实时性:视图数据实时同步基础表,基础表数据修改后,视图查询结果自动更新;
2. 逻辑独立性:屏蔽底层表结构细节,简化用户数据操作;
3. 权限安全性:可限制用户仅查看、操作部分字段和数据,实现数据权限分级;
4. 操作便捷性:将复杂多表联查、聚合查询封装为视图,无需重复编写复杂SQL。
2. 优点
1. 简化复杂查询:将多表连接、条件筛选、分组统计等复杂SQL封装为视图,用户直接查询视图即可,大幅降低重复编码工作量;
2. 保障数据安全:针对不同用户开放不同视图,隐藏敏感字段(如身份证、薪资、密码)和核心业务数据,实现精细化数据权限管理;
3. 统一数据展示:固定查询逻辑,统一团队、系统的数据查询标准,避免多人编写SQL导致的查询结果不一致问题;
4. 降低耦合度:底层表结构小幅调整时,可通过修改视图定义适配,无需修改前端业务代码,提升系统可维护性。
3. 缺点
1. 性能损耗:视图无缓存机制,每次查询都要动态执行底层SQL,多层嵌套视图会大幅降低查询效率;
2. 更新局限性:复杂视图(多表查询、含聚合函数、分组、去重)不支持增删改操作,仅简单单表视图可更新;
3. 依赖底层表:视图完全依赖基础表,若底层表被删除、字段修改,视图会直接失效,产生报错。
三、视图的分类
根据查询逻辑和结构特性,视图主要分为两类,也是考试和实操高频考点:
1. 简单视图
- 基于单个基础表创建;
- 不包含聚合函数、GROUP BY分组、DISTINCT去重、连接查询;
- 支持增、删、改、查所有DML操作,数据可同步回写到底层基础表。
2. 复杂视图
- 基于多表连接查询或单表复杂查询创建;
- 包含聚合函数(SUM、COUNT、AVG等)、分组、排序、去重、子查询;
- 仅支持查询操作,不支持增删改数据。
四、视图的SQL操作(通用语法,适配MySQL、SQL Server)
1. 创建视图
2. 查询视图
视图查询语法和普通数据表完全一致,是最常用的视图操作:
4. 删除视图
删除视图仅删除视图的逻辑定义,不会删除底层基础表和数据:
五、视图的更新操作(重难点)
1. 可更新视图条件
只有同时满足以下条件的简单视图,才能执行INSERT、UPDATE、DELETE操作:
1. 基于单表创建,无多表连接;
2. 无聚合函数、GROUP BY、DISTINCT、UNION;
3. 无常量计算字段、子查询;
4. 视图包含基础表所有非空无默认值的字段(新增数据必备)。
2. 视图更新示例
3. 不可更新场景总结
1. 视图包含SUM、COUNT、MAX等聚合函数;
2. 使用GROUP BY分组、DISTINCT去重、ORDER BY排序(部分数据库限制);
3. 多表关联查询创建的视图;
4. 包含虚拟计算字段的视图。
六、视图的典型应用场景
1. 数据权限管控:管理员创建不同视图,普通员工仅可查看业务数据,无法查看核心机密字段;
2. 简化高频复杂查询:将月度统计、多表联查、报表查询等重复复杂SQL封装为视图,一键查询;
3. 系统迭代兼容:数据库底层表结构重构、字段调整后,通过视图适配旧系统查询逻辑,保证业务不中断;
4. 报表数据展示:为BI报表、后台统计页面定制专属视图,统一报表数据来源。