范叶亮写智能体、模型和数据系统时,习惯先把定义和边界钉死。把「SQL 样式指南」整理成可落地的中文笔记:问题在哪、默认做法会踩什么坑、该怎么选。原站导航和广告已去掉。
一般原则
代码样式指南主要用于规范项目中代码的一致性,使得代码简单、可读和易于维护,从一定程度上也影响代码的质量。一句话概括如何评价代码的质量:
Google 针对大多数编程语言(例如:C/C++,Java,JavaScript,Python,R 等)都整理了相关的 代码风格 ,但对于 SQL 这种用于数据库查询特殊目的的编程语言并没有整理对应的风格。同其他编程语言代码风格一样,没有哪种风格是最好的,只要在项目中采用统一合理的风格即可。
命名惯例
/* Good */ SELECT id FROM table_name WHERE column = "test" ; /* Bad */ SELECT id FROM talbe_name WHERE column = "test" ; 多个元素组合无法呈现在一行中时,应将第一个元素另起一行。
/* Good */ SELECT CASE postcode WHEN 'BN1' THEN 'Brighton' WHEN 'EH1' THEN 'Edinburgh' END AS city FROM table_name ; /* Bad */ SELECT CASE postcode WHEN 'BN1' THEN 'Brighton' WHEN 'EH1' THEN 'Edinburgh' END AS city FROM table_name ; 由括号构成的多行,结尾括号应单独一行。
对齐和换行
/* Good */ SELECT id FROM table_name WHERE postcode IN ( 'looooooooooooooooooooooooong_BN1' , 'loooooooooooooooooooooooooog_EH1' ) /* Bad */ SELECT id FROM table_name WHERE postcode IN ( 'looooooooong_BN1' , 'looooooooong_EH1' ) 多行采用右侧逗号和左侧关键字连接。
/* Good */ SELECT id , name FROM talbe_name WHERE id > 1 AND name LIKE "%Tom%" ; /* Bad */ SELECT id , name FROM table_name WHERE id > 1 AND name LIKE "%Tom%" ; 根关键词建议单独一行,多个参数单独一行。
明确指定
/* Good */ SELECT id , name FROM table_name WHERE id > 1 AND name LIKE "%Tom%" LIMIT 10 ; /* Acceptable */ SELECT id , name FROM table_name WHERE id > 1 AND name LIKE "%Tom%" LIMIT 10 ; /* Bad */ SELECT id , name FROM table_name WHERE id > 1 AND name LIKE "%Tom%" LIMIT 10 ; 明确指定 使用 AS 明确指定别名,而非隐式。
/* Good */ SELECT table_name_1 . id AS user_id , table_name_2 . name AS user_name FROM looooooooong_table_name_1 AS table_name_1 LEFT JOIN looooooooong_table_name_2 AS table_name_2 ON table_name_1 . id = table_name_2 . id ; /* Bad */ SELECT table_name_1 . id user_id , table_name_2 . name user_name FROM looooooooong_table_name_1 table_name_1 LEFT JOIN looooooooong_table_name_2 table_name_2 ON table_name_1 . id = table_name_2 . id ; 避免使用隐式关联。
子查询
/* Good */ SELECT table_name_1 . id , table_name_2 . name FROM table_name_1 INNER JOIN table_name_2 ON table_name_1 . id = table_name_2 . id ; /* Bad */ SELECT table_name_1 . id , table_name_2 . name FROM table_name_1 , table_name_2 ON table_name_1 . id = table_name_2 . id ; 明确关联类型。
/* Good */ SELECT table_name_1 . id , table_name_2 . name FROM table_name_1 INNER JOIN table_name_2 ON table_name_1 . id = table_name_2 . id ; /* Bad */ SELECT table_name_1 . id , table_name_2 . name FROM table_name_1 JOIN table_name_2 ON table_name_1 . id = table_name_2 . id ; 明确指定分组列。
其他
/* Good */ SELECT submission_date , normalized_channel IN ( 'nightly' , 'aurora' , 'beta' ) AS is_prerelease , COUNT ( * ) AS count FROM telemetry . clients_daily WHERE submission_date > '2019-07-01' GROUP BY submission_date , is_prerelease ; /* Bad */ SELECT submission_date , normalized_channel IN ( 'nightly' , 'aurora' , 'beta' ) AS is_prerelease , COUNT ( * ) AS count FROM telemetry . clients_daily WHERE submission_date > '2019-07-01' GROUP BY 1 , 2 ; 子
/* Good */ WITH sample AS ( SELECT client_id , submission_date FROM main_summary WHERE sample_id = '42' ) SELECT * FROM sample LIMIT 10 /* Bad */ SELECT * FROM ( SELECT client_id , submission_date FROM main_summary WHERE sample_id = '42' ) LIMIT 10 尽量在 CTEs 中处理查询而非主语句中。
值得单独记下的点
- https://www.sqlstyle.guide/zh/
- https://about.gitlab.com/handbook/business-technology/data-team/platform/sql-style-guide/
- https://docs.telemetry.mozilla.org/concepts/sql_style.html
- https://github.com/mattm/sql-style-guide
- 使用空格(2 个或 4 个,项目中保持一致),避免使用 TAB 缩进。
- 在 SQL 中加入必要的注释,块注释使用 /* */ ,行注释使用 — ,并在末尾换行。
- 运算符前后添加空格,逗号 , 后添加空格,避免行尾有空格。
- 关键词、函数名称采用大写,字段名、表名采用小蛇式(lower snake case)命名。
落地时建议先做的 5 件事
- 先写清任务能不能被自动验证:能验证的交给系统和评测,不能验证的留给人审。
- 本地部署先算显存、延迟和失败回滚,不要只看能跑通一次。
- 多智能体只在单智能体触到上下文或专业边界时再拆。
- Token、微调和压缩都要有对照数字,避免口号式优化。
- 结论写成可检查清单:接口、超时、评测集、回滚版本。
和智能体产品怎么接
龙虾PRO做 OpenClaw 落地时,最该拿走的是「单智能体先做好工具和提示,再谈编排」。数字员工、技能市场和网关应共用同一套评测与权限,而不是各写一套角色人设。
本文侧重全链路风控方法论。落地时请用自身业务单据做回放验证,不要把示例阈值直接当生产策略。 相关:风控体检 · 方案资源
常见问题 FAQ
什么是AI智能系统?
「AI智能系统」可概括为:代码样式指南主要用于规范项目中代码的一致性,使得代码简单、可读和易于维护,从一定程度上也影响代码的质量。一句话概括如何评价代码的质量: 本文从定义、方法与实践要点展开说明。
为什么要关注AI智能系统?
关注AI智能系统,是因为它直接影响效率、风险与可复制性。文中指出:代码样式指南主要用于规范项目中代码的一致性,使得代码简单、可读和易于维护,从一定程度上也影响代码的质量。一句话概括如何评价代码的质量:
如何落地AI智能系统?有哪些关键步骤?
建议按以下路径推进AI智能系统:1) https://www.sqlstyle.guide/zh/;2) https://about.gitlab.com/handbook/business-technology/data-team/platform/sql-st…;3) https://docs.telemetry.mozilla.org/concepts/sql_style.html;4) https://github.com/mattm/sql-style-guide;5) 使用空格(2 个或 4 个,项目中保持一致),避免使用 TAB 缩进。。细节见正文对应章节。
AI智能系统适合哪些人或团队?
AI智能系统更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「AI智能系统」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。
关于「一般原则」,本文给出了什么结论?
在「一般原则」部分,要点是:编程语言并没有整理对应的风格。同其他编程语言代码风格一样,没有哪种风格是最好的,只要在项目中采用统一合理的风格即可。 命名惯例 /* Good */ SELECT id FROM table_name WHERE column = "test" ; /* Bad */ SELECT id FROM talbe_name WHERE column = "test" ; 多个元素组合无法呈现在一行中时,应将第一个元素另起一行。 /* Goo
关于「命名惯例」,本文给出了什么结论?
在「命名惯例」部分,要点是:oooooooooooooooooooog_EH1' ) /* Bad */ SELECT id FROM table_name WHERE postcode IN ( 'looooooooong_BN1' , 'looooooooong_EH1' ) 多行采用右侧逗号和左侧关键字连接。 /* Good */ SELECT id , name FROM talbe_name WHERE id > 1 AND name LIKE "%To