前言:
这周在帮同事的安装程序中嵌入Mysql时,遇到在Linux平台移植DML脚本错误的问题,具体定位到是Mysql在window平台默认对表名大小写不敏感,而Mysql在Linux平台默认表面是大小写敏感的。
由于SQL语言没有官方的书写规范,因此每个人在编写存储过程中遵循的都是不同的规则,而差的SQL语言书写规范会导致阅读性变差,跨平台性变差。 因此,我开始准备着手收集一些优秀的SQL语言书写规范,其中打钩的,是推荐遵守的。
参考:
https://blog.youkuaiyun.com/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;