首页 > 数据库 >大数据SQL格式化规范及示例

大数据SQL格式化规范及示例

时间:2024-06-17 21:29:56浏览次数:12  
标签:province 格式化 name 示例 SQL ubl dp

无论是数据仓库开发还是数据分析,编写清晰易读的SQL是一项基本的技能。本文将分享几个SQL格式的规范和示例,旨在提高SQL的可读性和可维护性。

虽然这些规范没有严格的标准,但统一的格式可以帮助减少理解和维护SQL代码的时间。不管团队其他人怎样,自己写的要有规范!

image.png

目录

大小写保持一致

SQL关键字的大小写可以自由选择,但应保持一致。例如:

SELECT customer_city, COUNT(*)
FROM dim_customer
WHERE customer_province = '上海'
GROUP BY customer_city;

示例:

不规范的SQL语句:

SELECT customer_city,count(*) from dim_customer WHERE customerProvince = '上海' Group by customer_city;

规范后的SQL语句:

SELECT customer_city, COUNT(*)
FROM dim_customer
WHERE customer_province = '上海'
GROUP BY customer_city;

注意点:

  • SQL关键字的大小写保持一致。
  • 字段命名风格保持一致,避免混用下划线和驼峰命名法。

使用缩进

合理的缩进能使SQL语句结构更加清晰。以下是两种常见的缩进方式:

示例1:

SELECT dp.region_name, COUNT(*)
FROM user_behavior_log ubl
JOIN dim_province dp ON ubl.province = dp.province_name
WHERE ubl.province = '上海市'
GROUP BY dp.region_name;

示例2:

SELECT
    dp.region_name,
    COUNT(*)
FROM user_behavior_log ubl
JOIN dim_province dp ON ubl.province = dp.province_name
WHERE ubl.province = '上海市'
GROUP BY
    dp.region_name;

示例3:

SELECT
    dp.region_name,
    COUNT(*)
FROM user_behavior_log ubl
JOIN dim_province dp ON ubl.province = dp.province_name
WHERE ubl.province = '上海市'
GROUP BY
    dp.region_name;

建议使用4个字符或2个字符缩进,根据团队习惯选择。

在GROUP BY和ORDER BY之后使用字段的排列序号

这种方式可以简化代码,特别是对于包含多个字段的分组和排序:

示例:

SELECT
    dp.region_name,
    dp.province_name,
    COUNT(*)
FROM user_behavior_log ubl
JOIN dim_province dp ON ubl.province = dp.province_name
GROUP BY 1, 2
ORDER BY 3;

这样写有如下好处:

  • 节省行数:避免在GROUP BY和ORDER BY子句中重复列名。
  • 可维护性:更改分组字段时,只需修改SELECT子句。

使用Common Table表达式(CTE)

CTE可以简化复杂查询,将查询逻辑拆分为多个部分,使代码更具可读性和可维护性:

示例:

WITH employee_by_title_count AS (
    SELECT t.name AS job_title, COUNT(e.id) AS amount_of_employees
    FROM employees e
    JOIN job_titles t ON e.job_title_id = t.id
    GROUP BY 1
),
salaries_by_title AS (
    SELECT name AS job_title, salary
    FROM job_titles
)
SELECT *
FROM employee_by_title_count e
JOIN salaries_by_title s ON s.job_title = e.job_title;

使用具有描述性的别名

为查询列加上易于理解的别名,可以增加脚本的可维护性:

示例:

SELECT
    dp.region_name AS region,
    COUNT(*) AS user_count
FROM user_behavior_log ubl
JOIN dim_province dp ON ubl.province = dp.province_name
WHERE ubl.province = '上海市'
GROUP BY dp.region_name;

总结

文中提到的一些规范,有些是必须遵守的,有些是个人习惯。无论你是开发人员、数据分析师,还是数据仓库开发人员,遵循这些规范可以避免不必要的麻烦。

SQL格式没有标准的约定,需要与团队成员达成共识,一起按照相同的约定进行开发,提高SQL代码的可读性和可维护性。

标签:province,格式化,name,示例,SQL,ubl,dp
From: https://blog.csdn.net/u012955829/article/details/139728540

相关文章

  • 达梦数据库执行SQL
     1.找到数据库安装路径 #路径ps-ef|grepdmserver进入/bin目录执行命令:#启动服务./disql 2.Linux内执行SQL回车执行SQL后会跟着2,3,4,等等记得SQL上加上;然后回车。建表:#新增users表。ID自增CREATETABLEusers(idINTP......
  • MySQL数据库管理补充
    目录一.数据表高级操作1.克隆表2.清空表3.创建临时表4.创建外键约束外键的定义主键表和外键表的理解4.1.创建主从表4.2.主从表中插入数据4.3.主从表中删除数据4.4.删除外检约束二.数据库用户管理1.新建用户2.查看用户信息3.重命名用户4.删除用户5.修改当前登......
  • sqlalchemy
    (一些框架介绍)1#1sqlalchemy企业级orm框架2官网:https://www.sqlalchemy.org/3#2python界的orm框架4-1django-orm#只能django框架用5-2peewee#小型orm框架:https://docs.peewee-orm.com/en/latest/peewee/quickstart.html6---......
  • 构建LangChain应用程序的示例代码:35、如何使用假设性文档嵌入(HyDE)技术来改善文档索引
    使用假设性文档嵌入(HyDE)改善文档索引摘要本文介绍了如何使用假设性文档嵌入(HypotheticalDocumentEmbeddings,简称HyDE),这是根据一篇论文中描述的技术。HyDE是一种嵌入技术,它接收查询,生成一个假设性的答案,然后嵌入该生成的文档,并将其作为最终示例使用。代码及注释froml......
  • 创建批量AD域用户的脚本可以使用 PowerShell 来实现。以下是一个简单的示例脚本,用于批
    创建批量AD域用户的脚本可以使用PowerShell来实现。以下是一个简单的示例脚本,用于批量创建用户:powershellCopyCode#导入ActiveDirectory模块Import-ModuleActiveDirectory#设定要创建用户的数量$numberOfUsers=10#循环创建用户for($i=1;$i-le$numberOfUs......
  • TiDB placement_rule in sql使用
    1、配置好tikvlabel例如:tikv_servers:-host:10.37.129.6ssh_port:22port:20160status_port:20180deploy_dir:/tidb-deploy/tikv-20160data_dir:/tidb-data/tikv-20160log_dir:/tidb-deploy/tikv-20160/logconfig:server.labels:host......
  • debezium+kafka实现sqlserver数据同步(debezium-connector-sqlserver)
    SELECTCASEWHENdss.[status]=4THEN1ELSE0ENDASisRunningFROM[#db].sys.dm_server_servicesdssWHEREdss.[servicename]LIKEN'SQLServerAgent(%'1.情景展示在企业当中,往往会存在不同数据库之间的表的数据需要保持一致的情况(数据同步)。如何将A库a表的数据......
  • mysqlconf
    [mysqld]#max_connections=20000#数据传输可能出现大表中断与这个有关系port=13306default-authentication-plugin=mysql_native_password#datadir=/opt/data/mysql/mysql#socket=/opt/data/mysql/mysql/mysql.sockdatadir=/opt/data/mysql/mysql/mysqlsocket=/o......
  • MySQL触发器基本结构
    1、修改分隔符符号delimiiter$$可以修改成$$//都行2、创建触发器函数名称createtrigger函数名3、什么样的操作触发,操作哪个表after:···之后触发before:···之前触发insert:插入被触发update:修改被触发delete:删除被触发on表名实例:在user表被添加信息后触发......
  • EasyRecovery数据恢复软件电脑的超级救星,无论是误删除的文件、格式化的硬盘还是病毒攻
    EasyRecovery数据恢复软件,是我近期用过最神奇的产品之一了!它就像是电脑的超级救星,无论是误删除的文件、格式化的硬盘还是病毒攻击,都能轻松搞定!让我给大家详细介绍一下这个神器吧!EasyRecovery数据恢复软件的功能真的是非常强大!它可以扫描并恢复各种类型的文件,包括照片、视频、......