IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL规范一《SQL 语法顺序与编码规范 》 -> 正文阅读

[大数据]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 * 等等的操作(当然博主之前也喜欢)。这种在做题和结果上面是没问题的。而在实际工作中遇到的表格远比做题中遇到的表格数据量大的多,字段也非常多,这时候使用以上操作效率会很低,因此上面的两种操作是不被推荐的。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:46:53  更:2022-04-07 22:48:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:08:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码