实际项目里的 SQL,真的是越用越觉得门道多。从最基本的事务到进阶的动态 SQL,这份总结可以说是打工人手边必备了。你会发现像行列转换批量更新这些操作,在数据清洗、报表时常见,搞熟它们能省不少力气。

事务的 ACID 特性就不多说了,关键是理解原子操作背后的逻辑,避免写出一半成功一半失败的奇葩 SQL。像这种细节,一旦在真实业务中踩坑,就知道它有多重要。

游标虽说效率不高,但在某些必须逐行的逻辑里,它还挺管用。比如循环更新每个部门的薪资等级,一条 SQL 肯定搞不定,这时候就得上游标了。

再说存储过程,我自己是经常用。是要复用的查询逻辑,写成存储过程扔到数据库里,调起来方便,还能减少前后端之间的数据传输。

数据展示里行列转换也挺常见。比如一张考勤表,你要把每天的签到情况按列展示,就得用 PIVOT 或者 GROUP BY 加 CASE,场景用得多就顺手了。

递归查询常出现在组织架构、分类这种多层级数据上,SQL Server 的 CTE 或者 Oracle 里的CONNECT_BY能搞定这类问题,写对一次,能节省不少代码。

数据库备份和还原这块,看似离开发远,其实一点都不。比如上线前你要跑一堆变更脚本,先备份一下数据库是最保险的操作。

项目越大,越容易遇到分布式查询。比如多个库分不同模块,跨库 JOIN 是避免不了的。这时候性能问题就得提前规划,别等到出问题才优化。

批量更新合并记录我觉得是数据维护的日常操作,是上线后数据改动频繁的时候,用得挺多。

动态 SQL适合那些条件变来变去的场景,但写的时候要注意 SQL 注入的问题,尽量用参数化的写法,安全第一。

如果你平时写 SQL 写得多,这篇总结可以当成随手翻的“秘籍”;哪块不会就翻哪块,查漏补缺方便。