MySQL视图 复习笔记

发布时间:2026/7/6 3:48:20
MySQL视图 复习笔记 MySQL视图 复习笔记一、视图基本概念视图可以理解为保存好的一条查询语句属于虚拟表。数据库中真正存数据的是基本表视图本身不存储任何真实数据也不占用数据存储空间只保存查询逻辑。每次使用视图查询数据都是实时从原始数据表中调取最新数据。数据表是物理表有完整结构、字段、数据、索引是数据库真正的数据载体。视图只是基于表生成的查询窗口。二、为什么要使用视图日常写SQL和项目开发中视图非常实用主要用途有这些简化查询操作平时多表联查、加条件筛选、排序统计的SQL很长反复写很麻烦。可以把固定查询封装成视图后续直接查询视图即可大幅简化代码。保障数据安全一张表里可能有很多敏感字段比如身份证、手机号、密码等。通过视图可以只开放需要展示的字段隐藏隐私数据不给用户直接操作原始表的权限。统一查询标准多人开发、多程序查询同一份数据时如果每个人写的查询条件不一样查出来的数据会不一致。视图统一写死查询规则所有人查询结果完全一致。屏蔽表结构变动如果底层数据表字段名称、结构微调只要修改视图定义即可上层查询代码不用改动降低维护成本。三、视图与数据表的详细区别存储方式不同数据表是物理存储真实保存所有数据和结构视图只保存SQL逻辑没有数据。创建方式不同建表需要定义字段名、数据类型、约束、主键建视图不需要设计结构直接基于已有表的查询结果生成。修改操作不同修改数据表是修改数据库真实的物理结构比如新增字段、修改字段长度、添加索引改动会永久生效。修改视图只是改写内部的查询语句原始数据表结构和数据完全不会改变。删除效果不同删除数据表会直接删除表结构、所有数据、索引数据永久丢失影响所有依赖该表的程序。删除视图只是删除这个查询窗口底层数据表和数据完好无损没有任何数据风险。四、视图数据增删改规则视图不是都能随便改数据能否更新取决于视图的查询语句。可以增删改的视图条件必须是单表视图并且查询语句简单没有特殊函数和筛选结构。这种视图的数据变化会直接同步到底层原始数据表。不能增删改、只能查询的情况只要视图包含以下任意一种内容就是只读视图不允许插入、更新、删除聚合函数包括AVG、SUM、COUNT、MAX、MINGROUP BY分组、HAVING筛选DISTINCT去重、ORDER BY排序多表JOIN连接查询UNION联合查询、子查询WITH CHECK OPTION 作用这是视图常用约束作用是强制数据合规。通过视图新增、修改的数据必须满足视图的WHERE筛选条件。如果不添加这个约束可以通过视图插入不符合条件的数据导致视图查不到刚插入的数据出现数据矛盾。五、视图优缺点总结优点封装复杂查询提高代码复用率隔离敏感数据提升数据库安全性数据实时更新永远查询最新数据简化权限管理适合多人使用缺点无物理数据无法建立索引查询效率不如真实数据表复杂视图不支持数据修改功能受限嵌套过多视图会层层叠加查询逻辑降低运行效率不能修改底层表结构只能做数据查询和简单更新六、常用视图SQL实操语句-- 创建普通视图CREATE VIEW v_studentASSELECT sid, name, nation FROM student;-- 创建带条件、带校验约束的视图CREATE VIEW v_hans_studentASSELECT * FROM student WHERE nation 汉WITH CHECK OPTION;-- 查询视图用法和查表完全一样SELECT * FROM v_student;-- 修改视图定义ALTER VIEW v_studentASSELECT sid, name, sex FROM student;-- 删除视图DROP VIEW IF EXISTS v_student;七、期末高频简答题汇总1. 简述视图和基本表的区别视图是虚拟表不存储数据仅保存查询语句数据表是物理表永久存储数据和结构。删除视图不影响数据删除数据表会丢失全部数据。视图不能建索引数据表可以建立索引优化查询。2. 什么样的视图是只读视图包含聚合函数、分组、去重、多表联查、联合查询、子查询的视图无法更新数据只能查询。3. WITH CHECK OPTION 的意义用于约束视图的数据操作保证新增和修改的数据符合视图的筛选条件避免产生视图无法查询到的“隐形数据”保证数据一致性。4. 视图的主要应用场景简化复杂查询、统一数据统计口径、隐藏敏感字段、做权限分级管理、适配底层表结构变更。