`

《阿里巴巴Java开发手册-v1.1》解读(一)sql规约

 
阅读更多

1.   【强制】不要使用count(列名)或count(常量)来替代count(*),count(*)是SQL92 定义的标准统计行数的语法,跟数据库无关,跟NULL 和非NULL 无关。  

     说明:count(*)会统计值为NULL 的行,而count(列名)不会统计此列为NULL 值的行。  

 

2.   【强制】count(distinct col) 计算该列除NULL 之外的不重复行数,注意 count(distinct  

     col1, col2) 如果其中一列全为NULL,那么即使另一列有不同的值,也返回为0。  

 

3.   【强制】当某一列的值全是NULL 时,count(col)的返回结果为0,但sum(col)的返回结果为 NULL,因此使用sum()时需注意NPE 问题。  

     正例:可以使用如下方式来避免sum 的NPE 问题:SELECT IF(ISNULL(SUM(g)),0,SUM(g))   FROM table;  

 

 4.   【强制】使用ISNULL()来判断是否为NULL 值。注意:NULL 与任何值的直接比较都为NULL。  

     说明:  

      1) NULL<>NULL 的返回结果是NULL,而不是false。  

      2) NULL=NULL 的返回结果是NULL,而不是true。  

      3) NULL<>1 的返回结果是NULL,而不是true。  

 

 5.   【强制】 在代码中写分页查询逻辑时,若count 为0 应直接返回,避免执行后面的分页语句。  

 

 6.   【强制】不得使用外键与级联,一切外键概念必须在应用层解决。  

     说明:(概念解释)学生表中的student_id是主键,那么成绩表中的student_id 则为外键。 

     如果更新学生表中的student_id,同时触发成绩表中的student_id更新,则为级联更新。 

     外键与级联更新适用于单机低并发,不适合分布式、高并发集群;级联更新是强阻塞,存在数 

     据库更新风暴的风险;外键影响数据库的插入速度。  

 

 7.   【强制】禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。  

 

 8.   【强制】数据订正时,删除和修改记录时,要先select,避免出现误删除,确认无误才能执行更新语句。  

 

9.   【推荐】in操作能避免则避免,若实在避免不了,需要仔细评估in后边的集合元素数量,控 制在1000 个之内。  

 

10.  【参考】如果有全球化需要,所有的字符存储与表示,均以utf-8 编码,那么字符计数方法

     注意:  

     说明:

         SELECT LENGTH("轻松工作"); 返回为12  

         SELECT CHARACTER_LENGTH("轻松工作"); 返回为4  

         如果要使用表情,那么使用utfmb4 来进行存储,注意它与utf-8 编码的区别。 

 

 11.  【参考】 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但TRUNCATE 

     无事务且不触发trigger,有可能造成事故,故不建议在开发代码中使用此语句。  

     说明:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同。

 

12. 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。 

     说明:1)增加查询分析器解析成本。2)增减字段容易与resultMap 配置不一致。

分享到:
评论

相关推荐

    阿里巴巴Java开发手册--1.4.0详尽版.rar

    《阿里巴巴Java开发手册》是Java开发者的一份重要参考资料,它由阿里巴巴集团编撰,旨在规范团队内部的编程习惯,提高代码质量和开发效率。手册的1.4.0详尽版进一步完善了原有的规则,涵盖了更多现代Java开发的最佳...

    阿里巴巴Java开发手册-泰山版.7z

    《阿里巴巴Java开发手册-泰山版》是阿里巴巴集团为了规范Java编程、提高代码质量和开发效率而发布的一份权威指南。这份手册在2020年4月22日更新至泰山版,反映了最新的技术和最佳实践。以下是对其中核心知识点的详细...

    阿里巴巴开发手册_阿里巴巴开发手册-泰山版_

    《阿里巴巴开发手册_阿里巴巴开发手册-泰山版》是阿里巴巴集团为Java开发者提供的一份详尽的编程规范和最佳实践指南。这份手册旨在提高代码质量、提升团队协作效率,并且遵循了阿里巴巴内部的一系列成熟开发标准。...

    阿里巴巴Java开发手册(嵩山版).zip

    《阿里巴巴Java开发手册》是阿里巴巴集团为Java开发者制定的一份权威技术规范,旨在提升团队协作效率,保证代码质量,减少项目风险。嵩山版作为其更新版本,包含了最新的最佳实践和编程规范,覆盖了基础设定、编程...

    阿里巴巴Java开发手册终极版v1.3.0 word 版本下载

    《阿里巴巴Java开发手册终极版v1.3.0》是阿里巴巴集团为了提升Java编程规范和代码质量而制定的一份详尽指南。这份手册涵盖了多个关键领域的最佳实践,旨在帮助开发者遵循一致的编码标准,提高代码可读性、可维护性和...

    阿里巴巴Java开发手册(嵩山版-2020.8).rar

    《阿里巴巴Java开发手册》是Java开发领域的一部重要参考文献,尤其在嵩山版更新后,它更加完善和全面地涵盖了编程实践中应遵循的各种规约和最佳实践。这部手册不仅适用于阿里巴巴集团内部,而且在全球范围内得到了...

    Java面试宝典 - v1.1_Java面试宝典-v1.1_

    《Java面试宝典 - v1.1》是针对Java开发者准备面试的重要参考资料,它涵盖了Java编程语言的关键概念、核心技术以及常见的面试问题。本课程旨在帮助软件开发人员在求职过程中更好地展示自己的Java技能和理解能力。 ...

    阿里巴巴开发规范手册-泰山版

    《阿里巴巴开发规范手册-泰山版》是一份针对Java软件开发者的详尽指南,旨在提高代码质量和团队协作效率。这份手册涵盖了多个关键领域的规约,包括编程规约、异常日志处理、单元测试策略、安全规约、MySQL数据库使用...

    阿里巴巴Java开发手册(华山版).pdf

    《阿里巴巴Java开发手册》通过一系列详尽的规约、建议和示例,为Java开发者提供了宝贵的指南。它不仅涵盖了基本的编程技巧和最佳实践,还深入探讨了高级主题,如并发控制、数据库管理和软件架构设计。遵循这些指南...

    阿里巴巴Java开发手册-华山版-1_5_0.zip

    《阿里巴巴Java开发手册-华山版》是阿里巴巴集团发布的一份详尽的Java编程规范,旨在提高代码质量、提升开发效率、减少维护成本。这份1.5.0版本的PDF文档于2019年6月19日进行了更新,为开发者提供了最新的编程指导。...

    Java 面试宝典 - v1.1

    《Java面试宝典》是为Java开发者准备的一份详尽的面试指南,旨在帮助他们在面试过程中展现出最佳的技术水平,从而获得理想的职位和薪资。这份资料深入浅出地讲解了Java编程语言的核心概念、最佳实践以及面试中常问的...

    阿里巴巴Java开发手册--2021.pdf.zip

    《阿里巴巴Java开发手册》是Java开发者的一份重要参考资料,它由阿里巴巴集团官方发布,旨在提升团队内部代码质量、规范开发行为、促进代码可维护性和稳定性。2021年的嵩山版是该手册的最新更新,它反映了当前Java...

    阿里巴巴Java开发手册-1.4.0(详尽版)

    《阿里巴巴Java开发手册》是阿里巴巴集团为提升Java开发质量与效率而制定的一份技术规范,这份详尽版的1.4.0版本包含了最新的最佳实践和编程指导原则。手册覆盖了编码规范、异常处理、并发控制、日志记录、性能优化...

    阿里巴巴Java开发手册(正式版).rar

    《阿里巴巴Java开发手册》是Java开发者的一份重要参考资料,它由阿里巴巴集团官方发布,旨在提升团队的代码质量和开发效率,确保软件的可维护性和稳定性。这份手册覆盖了Java编程的各个方面,包括基本编码规范、异常...

    阿里巴巴Java开发手册-详尽版(1.4.0)

    《阿里巴巴Java开发手册-详尽版(1.4.0)》是一份全面且权威的Java编程指南,由阿里巴巴集团的资深技术团队编撰而成。这份手册旨在为Java开发者提供一套标准化、统一化的开发规范,以提升代码质量和开发效率,减少...

    阿里巴巴Java开发手册(正式版)

    《阿里巴巴Java开发手册》是阿里巴巴集团为提升Java开发效率、保证代码质量和系统稳定性而制定的一套规范性文档。这份手册涵盖了多个方面的知识,包括编程规约、异常日志处理、MySQL数据库使用规范、工程构建与管理...

Global site tag (gtag.js) - Google Analytics