SQL规范一《SQL 语法顺序与编码规范 》

SQL 语法顺序与编码规范

前言:博主目前从事的是BA数据分析师、在实际工作中需要问其他部门的同事提供SQL需求,在此过程中,SQL代码的规范与否是非常重要的,规范的代码有助于成员间交流,保证一致性、统一性。因此,以我实际工作遇到的问题进行总结。

1.1 SQL 语法顺序

FROM
<表名> # 选取表,将多个表数据通过笛卡尔积变成一个表。
ON
<筛选条件> # 对笛卡尔积的虚表进行筛选
JOIN <join, left join, right join…>
<join表> # 指定join,用于添加数据到on之后的虚表中,例如left join会将左表的剩余数据添加到虚表中
WHERE
<where条件> # 对上述虚表进行筛选
GROUP BY
<分组条件> # 分组
<SUM()等聚合函数> # 用于having子句进行判断,在书写上这类聚合函数是写在having判断里面的
HAVING
<分组筛选> # 对分组后的结果进行聚合筛选
SELECT
<返回数据列表> # 返回的单列必须在group by子句中,聚合函数除外
DISTINCT # 数据除重
ORDER BY
<排序条件> # 排序,如非必要尽量不用
LIMIT
<行数限制>

1.2 实际操作中预计执行顺序

(8) SELECT (9)DISTINCT < 去重列 >
(1) FROM < 左表 >
(3) < 连接类型 > JOIN < 右表 >
(2) ON <连接条件>
(4) WHERE < 筛选条件 >
(5) GROUP BY < 分组列 >
(6) WITH {CUBE|ROLLUP}
(7) HAVING < 分组筛选 >
(10) ORDER BY < 排序列 >
(11) LIMIT < 行数限制 >

:这里大家注意,(4)WHERE 筛选的是连接后的新表。

1.3 编码规范

为了保证编写出的程序都符合相同的规范,便于理解、维护,减少出错概率,有助于成员间交流,保证一致性、统一性而建立的SQL程序编码规范。

1.3.1 注释
1)代码中需要添加必要的注释,以增强代码的可读性。
2)代码头部添加主题、功能描述等信息
3)对不易理解的分支条件表达式添加注释。
4)对重要的计算添加注释,说明其功能。
1.3.2 命名
1) 限制命名长度,建议表名及字段名字符总长度小于等于63。
2)表名按照品牌、模块、分类、用途、实际用途等命名,方便易懂。
3) 务必只使用小写字母,下划线,数字。
4) 不要以pg开头,不要以数字开头,不要使用保留字,单词之间用下划线"_"分开。
5)主键索引应以 pk_ 开头, 唯一索引以 uk_ 开头,普通索引以 idx_ 打头
1.3.3 SQL规范
1) 应该尽量避免全表扫描(除了大数据量扫描的数据分析,尽量使用索引。
2) 除非特殊原因,永远不要使用 SELECT * 需要显示指定获取字段列表example:
SELECT col1,col2,col3 FROM TABLE_NAME ...;
3) 不要使用delete 全表,性能很差,请使用truncate代替。
4) 代码中,不要使用count(*)判断是否有数据,速度很慢。 建议的方法limit 1 .
:大家在没工作之前,练习SQL代码时候,喜欢使用COUNT(*)SELECT * 等等的操作(当然博主之前也喜欢)。这种在做题和结果上面是没问题的。而在实际工作中遇到的表格远比做题中遇到的表格数据量大的多,字段也非常多,这时候使用以上操作效率会很低,因此上面的两种操作是不被推荐的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜的乄第七章

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值