大数据开发SQL代码编码原则和规范

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 这段SQL编码原则强调代码的功能完整性、清晰度、执行效率及可读性,通过统一关键词大小写、缩进量以及禁止使用模糊操作如select *等手段提升代码质量。此外,SQL编码规范还详细规定了代码头部信息、字段与子句排列、运算符前后间隔、CASE语句编写、查询嵌套、表别名定义以及SQL注释的具体要求,确保代码的一致性和维护性。

编码原则
SQL代码的编码原则如下:

代码功能完善。代码效果参考:http://www.603393.com/sitemap/post.html

代码行清晰、整齐,代码行的整体层次分明、结构化强。

代码编写充分考虑执行速度最优的原则。

代码中需要添加必要的注释,以增强代码的可读性。

规范要求并非强制性约束开发人员的代码编写行为。实际应用中,在不违反常规要求的前提下,允许存在可以理解的偏差。

SQL代码中应用到的所有SQL关键字、保留字都需使用全大写或小写,例如select/SELECT、from/FROM、where/WHERE、and/AND、or/OR、union/UNION、insert/INSERT、delete/DELETE、group/GROUP、having/HAVING和count/COUNT等。不能使用大小写混合的方式,例如Select或seLECT等方式。

4个空格为1个缩进量,所有的缩进均为1个缩进量的整数倍,按照代码层次对齐。

禁止使用select *操作,所有操作必须明确指定列名。

对应的括号要求在同一列的位置上。

SQL编码规范
SQL代码的编码规范如下:

代码头部

代码头部添加主题、功能描述、作者和日期等信息,并预留修改日志及标题栏,以便后续添加修改记录。注意每行不超过80个字符,模板如下。

-- MaxCompute(ODPS) SQL


-- 所属主题: 交易
--
功能描述: 交易退款分析
-- 创建者 : 有码
--
创建日期: 20170616
-- 修改日志:
--
修改日期 修改人 修改内容
-- yyyymmdd name comment
-- 20170831 无码 增加对biz_type=1234交易的判断


字段排列要求

SELECT语句选择的字段按照每行1个字段的方式编排。

首个选择的字段与SELECT之间隔1个缩进量。

换行缩进2个缩进量后,添加逗号再输入其它字段名。

2个字段之间的逗号分隔符紧跟在第2个字段的前面。

AS语句应与相应的字段在同一行,多个字段的AS建议尽量对齐在同一列上。as语句

INSERT子句排列要求

INSERT子句写在同一行,请勿换行。

SELECT子句排列要求

SELECT语句中所用到的from、where、group by、having、order by、join和union等子句,需要遵循如下要求:

换行编写。

与相应的SELECT语句左对齐编排。

子句首个单词后添加2个缩进量,再编写后续的代码。

WHERE子句下的逻辑判断符and、or等,与WHERE左对齐编排。

超过2个缩进量长度的子句加1个空格后,再编写后续代码,例如order by和group by等。超过两个缩进量

运算符前后间隔要求

算术运算符、逻辑运算符前后要保留1个空格,并写在同一行(超过每行80个字符长度的限制除外)。运算符

CASE语句的编写

CASE语句可以用于SELECT语句中对字段值进行判断取值的操作。CASE语句编排的规则如下:

WHEN子语在CASE语句的同一行,并缩进1个缩进量后开始编写。

每个WHEN子句尽量在1行内编写,如果语句较长可以换行。else子句

CASE语句必须包含ELSE子句,ELSE子句与WHEN子句对齐。

查询嵌套编写规范

在数据仓库系统ETL开发中经常使用子查询嵌套,其编写规范示例如下。子查询

表别名定义约定

一旦在SELECT语句中给操作表定义了别名,在整个语句中对此表的引用都必须以别名替代,所以需要给所有的表添加别名。

表别名采用简单字符命名,建议按a、b、c、d…的顺序进行命名,并避免使用关键字。

多层次的嵌套子查询别名之前要体现层次关系,SQL语句的别名需要分层命名,从第1层次至第4层次,分别用P(Part) 、S(Segment)、 U(Unit) 和D(Detail)表示。您也可以用a、b、c、d来表示第1层次到第4层次。

对于同一层次的多个子句,在字母后加1、2、3、4……区分,并根据情况对表别名添加注释。别名

SQL注释

每条SQL语句均应添加注释说明。

每条SQL语句的注释单独成行,并放在语句的前面。

字段注释紧跟在字段后面。

对不易理解的分支条件表达式添加注释。

对重要的计算添加注释,说明其功能。

过长的函数实现,应将其语句按实现的功能分段,添加注释进行说明。

添加常量及变量的注释时,应注释被保存值的含义(必选),合法取值的范围(可选)。

将鼠标放置对应SQL语句之后,使用Ctrl+/或Cmd+/快捷键即可注释当前语句。如果您需要注释多行语句,则可以选中需要注释的语句,使用Ctrl+/或Cmd+/批量完成注释。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
15天前
|
SQL JSON 分布式计算
ODPS SQL ——列转行、行转列这回让我玩明白了!
本文详细介绍了在MaxCompute中如何使用TRANS_ARRAY和LATERAL VIEW EXPLODE函数来实现列转行的功能。
|
10天前
|
SQL 分布式计算 大数据
代码编码原则和规范大数据开发
此文档详细规定了SQL代码的编写规范,包括代码的清晰度,执行效率,以及注释的必要性。它强调所有SQL关键字需统一使用大写或小写,并禁止使用select *操作。此外,还规定了代码头部的信息模板,字段排列方式,INSERT, SELECT子句的格式,运算符的使用,CASE语句编写规则,查询嵌套规范,表别名定义,以及SQL注释的添加方法。这些规则有助于提升代码的可读性和可维护性。
11 0
|
18天前
|
监控 Java 开发者
揭秘Struts 2性能监控:选对工具与方法,让你的应用跑得更快,赢在起跑线上!
【8月更文挑战第31天】在企业级应用开发中,性能监控对系统的稳定运行至关重要。针对流行的Java EE框架Struts 2,本文探讨了性能监控的工具与方法,包括商用的JProfiler、免费的VisualVM以及Struts 2自带的性能监控插件。通过示例代码展示了如何在实际项目中实施这些监控手段,帮助开发者发现和解决性能瓶颈,确保应用在高并发、高负载环境下稳定运行。选择合适的监控工具需综合考虑项目需求、成本、易用性和可扩展性等因素。
24 0
|
18天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
85 0
|
18天前
|
SQL 存储 分布式计算
MaxCompute SQL 与传统 SQL 的异同
【8月更文第31天】随着大数据处理的需求日益增长,传统的 SQL 数据库已经无法满足海量数据的分析需求。MaxCompute(又名 ODPS,Open Data Processing Service)是阿里云提供的大数据处理平台,它提供了 SQL 接口,使得用户可以通过熟悉的 SQL 语法来处理大规模的数据集。然而,由于 MaxCompute 设计初衷是为了处理 PB 级别的数据,因此其 SQL 与传统的 SQL 存在一些差异。本文将探讨 MaxCompute SQL 与标准 SQL 的异同,并介绍 MaxCompute SQL 的一些特殊功能。
21 0
|
2月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
59 13
|
2月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
2月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
44 6
|
1月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
144 0
|
2月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
103 1

热门文章

最新文章