当前位置: 首页 > news >正文

MySQL-视图

1-什么是视图什么是视图数据库视图 View一句话视图是一张虚拟表本身不存真实数据只是保存了一条查询 SQL 语句。核心特点虚拟表无物理存储数据还是来自原有的基础表视图只是给查询结果起了个名字不占额外存储空间。本质是封装好的 SELECT 查询创建视图时存的就是一段 SQL每次查视图都会实时执行这段 SQL从原表拿最新数据。用法和普通表一模一样可以直接SELECT * FROM 视图名像查表一样用。2-视图的功能是什么视图的作用简化复杂查询把多表联查、复杂条件封装成视图不用每次写长 SQL权限控制只给用户看部分字段 / 部分数据隐藏敏感信息统一接口底层表结构变了只要改视图上层查询不用改逻辑复用多处要用的相同查询逻辑封装成视图重复使用3-视图的优缺点一、优点简化查询复杂多表联查、条件筛选封装成视图直接查表式使用不用重复写长 SQL。安全保密可以隐藏敏感字段身份证、薪资、手机号只开放允许查看的列 / 行做数据权限控制。逻辑统一、复用性强统一统计和查询口径所有人用同一个视图避免各自写 SQL 导致结果不一致。程序与表结构解耦底层表改结构、拆分、更名只需修改视图定义上层业务代码不用改动。操作简单使用方式和普通表完全一样支持SELECT简单视图还能增删改。便于权限管理不用给原表授权只给视图授权管控更精细。二、缺点无独立存储性能有损耗视图不存数据每次查询都实时执行底层 SQL复杂视图多嵌套时查询变慢。更新限制多聚合视图、分组、DISTINCT、多表联查视图基本不能做增删改只有单表简单视图可更新。依赖基础表底层原表一旦删除、改关键字段视图直接失效兼容性差。调试排障麻烦多层视图嵌套时底层逻辑隐藏出问题很难追踪原始 SQL 和性能瓶颈。不能建索引普通视图普通视图无法加索引大数据量查询效率偏低只有物化视图可解决但占用存储空间。4-WITH CHECK OPTIONWITH CHECK OPTION 通俗易懂详解一、是什么在可更新视图创建时加上WITH CHECK OPTION作用强制要求通过视图 新增 / 修改 的数据必须满足视图本身的 WHERE 过滤条件否则报错禁止操作。二、不加 WITH CHECK OPTION 会怎样举例子 有员工表emp创建只查工资小于 5000的视图sqlCREATE VIEW v_emp_low AS SELECT id,name,salary FROM emp WHERE salary 5000;不加校验时 你可以通过这个视图把某人工资改成 6000。 改完后这条数据从视图里消失了但真实表已经被改乱了。三、加上 WITH CHECK OPTIONsqlCREATE VIEW v_emp_low AS SELECT id,name,salary FROM emp WHERE salary 5000 WITH CHECK OPTION;现在规则生效修改不能把工资改成 ≥5000会报错新增不能新增工资 ≥5000 的记录会报错 保证视图里的数据永远符合视图条件不会出现 “改完就从视图消失” 的情况。四、核心作用防止通过视图篡改超出视图范围的数据保证视图数据的完整性和一致性做行级数据权限控制只能操作视图可见范围内的数据五、使用前提WITH CHECK OPTION只对可更新视图有效以下视图不能用、也不能更新包含GROUP BY、聚合函数DISTINCT多表复杂联表包含子查询5-案例WITH CHECK OPTION 实操演示一步一步看懂区别1. 先建测试表sqlCREATE TABLE emp ( id INT, name VARCHAR(20), salary INT ); -- 插两条数据 INSERT INTO emp VALUES (1,张三,3000), (2,李四,4000);2. 创建不加WITH CHECK OPTION 的视图只看工资小于 5000 的人sqlCREATE VIEW v_emp1 AS SELECT id,name,salary FROM emp WHERE salary 5000;测试通过视图改工资sqlUPDATE v_emp1 SET salary6000 WHERE id1;✅可以修改成功结果真实表中张三工资变成 6000再查v_emp1张三消失了问题通过视图改出了视图的过滤范围数据乱了。3. 创建加WITH CHECK OPTION 的视图sqlCREATE VIEW v_emp2 AS SELECT id,name,salary FROM emp WHERE salary 5000 WITH CHECK OPTION;同样尝试修改sqlUPDATE v_emp2 SET salary9000 WHERE id2;❌直接报错禁止修改尝试插入超范围数据sqlINSERT INTO v_emp2 VALUES(3,王五,7000);❌ 也报错不让插核心结论不加 WITH CHECK OPTION可以通过视图修改 / 插入不符合视图WHERE条件的数据改完记录就跑出视图了。加 WITH CHECK OPTION强制约束通过视图新增、修改的数据必须满足视图的 WHERE 条件不满足直接拦截报错。6-举例说明不可更新视图只要满足下面任意一种视图只能查不能增删改1. 包含聚合函数COUNT/SUM/MAX/MIN/AVGsqlCREATE VIEW v_score_total AS SELECT stu_id,AVG(score) avg_score FROM score GROUP BY stu_id;❌ 不能 insert /update/delete 原因聚合结果无对应原始单行数据无法反向修改原表2. 使用 GROUP BY 分组sqlCREATE VIEW v_class_count AS SELECT class,COUNT(*) num FROM student GROUP BY class;❌ 不可更新 分组后数据是汇总统计无法对应单条记录3. 使用 DISTINCT 去重sqlCREATE VIEW v_distinct_name AS SELECT DISTINCT name FROM student;❌ 不可更新 重复字段被合并分不清修改哪一条原始数据4. 多表联查创建的视图sqlCREATE VIEW v_stu_info AS SELECT s.id,s.name,c.class_name FROM student s JOIN class c ON s.cidc.id;❌ 不可更新 一张视图对应两张物理表无法确定修改哪张表字段5. 字段是表达式 / 计算列sqlCREATE VIEW v_stu_age AS SELECT id,name,birth,2026-birth real_age FROM student;❌ 不可更新real_age是计算出来的虚拟字段没有实际存储字段6. 使用 UNION / UNION ALL 合并结果sqlCREATE VIEW v_all_user AS SELECT id,name FROM student UNION SELECT id,name FROM teacher;❌ 不可更新 合并两张表数据无法定位修改数据源7. 包含子查询sqlCREATE VIEW v_high_score AS SELECT * FROM student WHERE id IN (SELECT stu_id FROM score WHERE score90);❌ 大多不可更新总结背诵出现聚合、分组、去重、多表连接、计算字段、联合查询视图一律只读不可更新。7-带WITH CHECK OPTION视图删除规则删除不受该语句限制WITH CHECK OPTION只约束插入、修改不约束删除。视图只删行不能删字段视图删除语句只能删除整条记录无法单独删除某个字段值。通过视图删数据直接删除基础表真实数据数据永久删除。仅单表简单视图支持删除复杂视图不能删。WITH CHECK OPTION不限制删除操作。删除前核对条件避免误删留意原表外键、触发器、权限问题。视图仅做查询正式删数据优先操作原始基础表。
http://www.gsyq.cn/news/1350684.html

相关文章:

  • 爆仓价格系数推导
  • 2026年5月最新青岛市北黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 诚信金利回收
  • AI动态简报之技术前沿篇(2026.05.22)
  • 王炸!史上最强的智慧园区管理系统,java最新技术栈,支持信创!
  • 2026年5月最新鸡西麻山黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 五金回收
  • 2026年5月最新牡丹江林口黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 诚信金利回收
  • RK3588开发板Ubuntu系统深度解析:架构设计与性能优化指南
  • 3个关键策略彻底解决BT下载速度慢问题:trackerslist完整配置手册
  • 《Enterprise Architecture with SAP》—— 从“纸上蓝图”到“场景落地”
  • Bean 为什么需要生命周期?90%的人只会背流程
  • MTM 结算
  • 3分钟搞定!GetQzonehistory:你的QQ空间记忆时光机
  • Cortex-R52学习:时钟和复位
  • 打卡信奥刷题(3292)用C++实现信奥题 P8976 「DTOI-4」排列
  • 2026年5月最新牡丹江宁安黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 诚信金利回收
  • 第16章:Agent进阶之路与未来展望——成为智能体专家
  • SmoothQuant中LayerNorm前权重缩放约束
  • 企业内多个 AI 应用项目如何通过 Taotoken 实现统一的 API Key 管理与审计
  • 2026年5月最新牡丹江西安黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 诚信金利回收
  • 进程管理器大横评:从 PM2 到 Systemd 的选型与实战
  • 【成都信息工程大学、澳门城市大学、四川工商学院和新加坡城市科学出版社《国际化教育科学与理论》期刊联合主办| 最快刊后1个月内上知网谷歌】第十届教育管理与社会科学国际学术会议(ISEMSS 2026)
  • public function getAttribute(string $key): mixed {的庖丁解牛
  • 2026年5月最新葫芦岛绥中黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 五金回收
  • FlashAttention 深度解读:让大模型注意力机制“一口气算完“
  • 2026年5月最新杭州上城黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 五金回收
  • ARM SVE向量化技术解析与性能优化实践
  • 2026年5月最新保定易县黄金回收白银回收铂金回收权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 金诚回收
  • 【案例共创】CodeArts+SKILL 双引擎:AI 驱动 WEB 服务器极速部署
  • 3步搞定:m4s-converter让你的B站缓存视频重获新生
  • 3步搞定:m4s-converter让你的B站缓存视频重获新生