视图是带名字的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助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
NiceCloud喜云1 分钟前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略ccddsdsdfsdf17 分钟前
DBeaver怎么链接mongoDBAI玫瑰助手34 分钟前
Python函数:默认参数的定义与注意事项weixin_4684668538 分钟前
全局与局部注意力机制新手实战指南小糖学代码1 小时前
LLM系列:环境搭建:5.Python-dotenv 环境变量管理丷丩1 小时前
Postgresql基础实践教程(十一)各种Join星夜夏空991 小时前
FreeRTOS学习(4)——内存映射智慧物业老杨2 小时前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案橙橙笔记2 小时前
Python的学习第一部分TheRouter2 小时前
AI Agent 记忆体系建设实战:短期、长期与工作记忆的工程实现