几乎所有大厂就会对代码规范有着严格要求,以确保多人协作开发下来的代码质量有统一的标准。在Java开发领域,《阿里巴巴Java开发指南》被开发者们广泛学习和应用。原指南内容较多,本文仅列举SQL词句方面须要重点注意的事项(强制遵循的规则),并剖析规定背后的缘由,所谓知其然,亦知其所以然。
1.【强制】不要使用count(列名)或count(常量)来代替count(*),count(*)是SQL92定义的标准统计行数的句型,跟数据库无关,跟NULL和非NULL无关。
说明:count(*)会统计值为NULL的行,而count(列名)不会统计此列为NULL值的行。
2.【强制】count(col)估算该列除NULL之外的不重复行数,注意count(col1,col2)若果其中一列全为NULL,这么虽然另一列有不同的值,也返回为0。
3.【强制】当某一列的值全是NULL时,count(col)的返回结果为0,但sum(col)的返回结果为NULL,因而使用sum()时需注意NPE问题。
正例:可以使用如下形式来防止sum的NPE问题:IF((SUM(g)),0,SUM(g))FROMtable;
4.【强制】使用()来判定是否为NULL值。
说明:NULL与任何值直接比较,结果都为NULL。
1)的返回结果是NULL,而不是false。
2)NULL=NULL的返回结果是NULL,而不是true。
3)NULL1的返回结果是NULL,而不是true。
5.【强制】在代码中写分页查询逻辑时,若是count为0应直接返回,防止执行前面的分页句子。
6.【强制】不得使用字段与级联,一切字段概念必须在应用层解决。
说明:以中学生和成绩的关系为例,中学生表中的是字段,这么成绩表中的则为主键。假如更新中学生表中的,同时触发成绩表中的更新,即为级联更新。字段与级联更新适用于单机低并发,不适宜分布式、高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;字段影响数据库的插入速率。
7.【强制】禁止使用储存过程,储存过程无法调试和扩充,更没有移植性。
8.【强制】删除和更改数据记录时,要先,防止出现误删掉,确认无误就能执行更新句子。