SQL Patterns 是一份针对常见 SQL 写法的快速参考资料,重点在于用简短代码示例和对照表格帮助快速查找与复用 SQL 模式。
主要能力与内容
一、CTE(公用表表达式)。资料给出基础 CTE 示例:使用 WITH active_users AS (...) 先筛选出活跃用户,再在外部查询中对其过滤。同时给出链式 CTE 示例:先定义 active_users,再定义 user_orders(按 user_id 统计订单数),最后用 LEFT JOIN 连接两者,并用 COALESCE 处理空值。
二、窗口函数速查。以表格列出常用函数及其用途:ROW_NUMBER() 用于唯一顺序编号;RANK() 用于带间隔排名(1, 2, 2, 4);DENSE_RANK() 用于不带间隔排名(1, 2, 2, 3);LAG(col, n) 取前一行的值;LEAD(col, n) 取后一行的值;SUM() OVER 用于累计求和;AVG() OVER 用于移动平均。并附示例:在 daily_sales 上按 date 排序,使用 LAG 取前一天收入,使用 SUM() OVER 计算累计总额。
三、JOIN 参考。以表格说明各类型返回结果:INNER JOIN 仅返回匹配行;LEFT JOIN 返回左表全部加右表匹配行;RIGHT JOIN 返回右表全部加左表匹配行;FULL JOIN 返回全部行,未匹配处为 NULL。
四、分页写法。给出两种方式:一是 OFFSET/LIMIT,写法简单但大偏移量时较慢;二是键集分页(keyset),通过 WHERE id > 42 ORDER BY id LIMIT 20 实现,速度快、可扩展。
五、索引速查。以表格说明适用场景:B-tree 适合范围查询与 ORDER BY;Hash 仅适合精确等值匹配;GIN 适合数组、JSONB、全文检索;Covering(覆盖索引)用于避免回表查询。
六、反模式对照。以表格列出常见错误及修复方式:SELECT * 应显式列出列;WHERE YEAR(date) = 2024 应改为范围条件 WHERE date >= '2024-01-01';带 NULL 的 NOT IN 应改用 NOT EXISTS;N+1 查询应改用 JOIN 或批量处理。
七、附加资源。资料提示可加载更详细的模式文件:./references/window-functions.md(完整的窗口函数模式)与 ./references/indexing-strategies.md(索引类型、覆盖索引、优化)。
触发方式与适用场景
资料说明其在以下关键词出现时触发:sql patterns、cte example、window functions、sql join 等(描述中以省略号结尾)。因此更适合作为编写 SQL、复习常见模式、排查索引与查询反模式时的速查工具。
限制
资料未提供具体支持的数据库平台、版本、安装或使用步骤、收费与价格等信息,均暂未提供。内容以速查片段为主,不构成完整教程。