SQL语言书写规范(持续更新)

前言:

  这周在帮同事的安装程序中嵌入Mysql时,遇到在Linux平台移植DML脚本错误的问题,具体定位到是Mysql在window平台默认对表名大小写不敏感,而Mysql在Linux平台默认表面是大小写敏感的。

  由于SQL语言没有官方的书写规范,因此每个人在编写存储过程中遵循的都是不同的规则,而差的SQL语言书写规范会导致阅读性变差,跨平台性变差。 因此,我开始准备着手收集一些优秀的SQL语言书写规范,其中打钩的,是推荐遵守的。

参考:

https://blog.csdn.net/qq_34100655/article/details/82904797

https://www.cnblogs.com/yangkunlisi/archive/2011/09/14/2176773.html

https://www.runoob.com/mysql/mysql-insert-query.html

SQL书写规范:

0、SQL语言应正确、规范、高效和最优;(书写目标)√

1、在同一个项目中,SQL遵守同一书写规范;(提高代码阅读性)√

2、建议SQL的表名、列明小写,系统保留字、内置函数大写;(不同数据库或者平台,对大小写敏感设置都是不同的,提高SQL移植性)√

3、or、and、in等连接符前后加上空格;(提高代码阅读性)

4、使用INSERT语句时,应指定插入的字段名,不建议直接插入VALUES;(防止数据错位)√

INSERT INTO runoob_tbl 
(runoob_title, runoob_author, submission_date)
 VALUES
("学习 PHP", "菜鸟教程", NOW());

5、使用SELECT语句时,应指定列名,不建议使用*代替;(提高SQL运行速度)√

SELECT 
	list.manifest_no,
	list.bill_no,
    stat.list_stat
FROM
mft_list list,
list_stat stat
WHERE 
list.manifest_no = stat.manifest_no
AND list.bill_no = stat.list_no;

6、表数据尽量使用英文、当确定表数据会出现中文时,应当建表时设置好字符集-utf8;(提高容错性)√

CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;