视图是带名字的SELECT语句,用于简化查询和权限隔离;存储过程是可执行SQL脚本,支持分支、循环、事务等复杂逻辑。视图就是"带名字的 SELECT",存储过程是"能执行的 SQL 脚本"视图本质是一条被保存下来的 SELECT 语句,每次查它,数据库都重新跑一遍底层查询;存储过程则是预编译的一段可执行逻辑,可以含 IF、WHILE、变量、事务,甚至调用其他存储过程。视图不能有 INSERT/UPDATE 以外的逻辑,也不能声明变量或控制流程存储过程不返回结果集(除非显式 SELECT),但可通过 OUTPUT 参数或 RETURN 值传回数据MySQL 中视图不支持物化(即不会缓存结果),而存储过程执行时会复用执行计划,多次调用更快视图可以嵌套(比如从视图再建视图),但容易引发性能陷阱;存储过程不能"嵌套定义",但可以互相调用什么时候该用视图:权限隔离、简化多表查询如果你要让前端或报表工具只看某几个字段、某几类用户的数据,或者反复写同一段 JOIN + WHERE,视图是最轻量的封装方式。典型场景:CREATE VIEW active_users AS SELECT id, username, email FROM users WHERE status = 'active';配合 WITH CHECK OPTION 可防止通过视图插入非法数据(比如把非 active 用户插进去)注意:视图上加 ORDER BY 无效(SQL 标准限制),排序必须在外部 SELECT 里写别在视图里写太重的逻辑------例如 GROUP BY + 窗口函数嵌套,否则每次查都触发全量计算什么时候该用存储过程:需要分支、循环、事务或参数化动作当业务逻辑涉及"先查 A 表 → 判断条件 → 再改 B 表 → 记日志 → 提交或回滚",就必须上存储过程,视图完全做不到。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
丙氨酸長鏈10 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例Dxy123931021610 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)bamb0011 小时前
一个项目带你入门AI应用开发01独行侠影a11 小时前
APScheduler+Redis 分布式定时任务:解决多实例任务重复执行05664611 小时前
Python康复训练——常用标准库昆曲之源_娄江河畔11 小时前
Python如何安装flask, pymssql传说故事11 小时前
数据库中一些常用英文单词含义05664611 小时前
Python康复训练——控制流与函数夏贰四12 小时前
中小企业搭建业务中台如何控成本?业务中台轻量化落地分几步实施?天使day12 小时前
FastAPI快速入门