SQL 大小写规范
1. Windows和Linux平台区别
- 在SQL中,关键字和函数名是不用区分字母大小写的,比如
SELECT、WHERE、 ORDER、 GROUP BY
等关键字,以及ABS、MOD、 ROUND、 MAX
等函数名。 - 不过在SQL中,还是要确定大小写的规范,因为在Linux和Windows环境下,可能会遇到不同的大小写问题。Windows系统默认大小写不敏感,但是Linux系统是大小写敏感的。
- 通过如下命令查看:
SHOW VARIABLES LIKE '%lower_case_table_names%';
- Windows系统下 :
- Linux系统下:
lower_case_table_names
参数值的设置:- 默认为
0
,大小写敏感。 - 值为
1
,大小写不敏感。创建的表,数据库都是以小写形式存放在磁盘上,对于sql语句都是转换为小写对表和数据库进行查找。 - 值为
2
,创建的表和数据库依据语句上格式存放,凡是查找都是转换为小写进行。
- 默认为
- 两个平台上SQL大小写的区别具体来说:
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名、表名、表的别名、变量名是严格区分大小写的;
2、关键字、函数名称在SQL中不区分大小写;
3、列名(或字段名)与列的别名(或字段别名)在所有的情况下均是忽略大小写的;
MySQL在Windows的环境下全部不区分大小写
2. Linux下大小写规则设置
- 设置为大小写不敏感时,要在
my.cnf
这个配置文件[mysqld]
中加入lower_case_table_names=1
,然后
重启服务器。 - 但是要在重启数据库实例之前就需要将原来的数据库和表转换为小写,否则将找不到数据库名。
- 此参数适用于MySQL5.7。在MySQL 8下禁止在重新启动MySQL服务时将
lower_case_table_names
设置成不同于初始化MySQL服务时设置的lower_case_table_names
值。如果非要将MySQL8设置为大小写不敏感,具体步骤为:
1、停止MySQL服务
2、删除数据目录,即删除/var/lib/mysql 目录
3、在MySQL配置文件( /etc/my.cnf )中添加 lower_case_table_names=1
4、启动MySQL服务
- 注意:在进行数据库参数设置之前,需要掌握这个参数带来的影响,切不可盲目设置。
3. SQL编写建议
- 如果你的变量名命名规范没有统一,就可能产生错误。这里有一个有关命名规范的建议:
- 关键字和函数名称全部大写;
- 数据库名、表名、表别名、字段名、字段别名等全部小写;
- SQL 语句必须以分号结尾;
- 数据库名、表名和字段名在Linux MySQL环境下是区分大小写的,因此建议你统一这些字段的命名规则,比如全部采用小写的方式。
- 虽然关键字和函数名称在SQL中不区分大小写,也就是如果小写的话同样可以执行。但是同时将关键词和函数名称全部大写,以便于区分数据库名、表名、字段名。