1、在SQL中,关键字和函数名是不缺分字母大小写的,但是在不同平台可能会遇到大小写问题,以 window 和 Linux为例,window下大小写是不敏感的,而在linux下 大小写是敏感的,可通过以下命令查看:
mysql> show variables like '%lower_case_table_names%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 1 |
+------------------------+-------+
1 row in set, 5 warnings (1.20 sec)
mysql> show variables like '%lower_case_table_name%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 0 |
+------------------------+-------+
1 row in set (1.19 sec)
2、lower_case_table_names 参数说明:
3、在linux下大小写规范说明
4、Linux下设置大小写不敏感,执行以下语句,并添加 lower_case_table_names=1,重启服务
[root@rqtanc ~]# vim /etc/my.cnf
[root@rqtanc ~]# systemctl restart mysqld.service
1、sql_mode 会影响MySQL支持的语法以及它执行的 数据验证检查 。通过设置sql_mode可以完成不同严格程度的校验,有效的保证数据的准确性。
2、模式查看和设置
2.1、查看
mysql> SHOW VARIABLES LIKE 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.12 sec)
2.2、设置
#启用编辑
[root@rqtanc ~]# vim /etc/my.cnf
#添加
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#重启服务
[root@rqtanc ~]# systemctl restart mysqld.service
3、sql_mode常用值
常用值 | 说明 |
---|---|
STRICT_TRANS_TABLES | 在严格模式下处理事务表。在这种模式下,任何插入、更新或删除操作都会导致错误,如果数据不符合表的定义或不符合相关约束 |
NO_AUTO_CREATE_USER | 禁止使用 GRANT 命令自动创建用户。 |
NO_ENGINE_SUBSTITUTION | 如果指定的存储引擎不可用,则会生成错误而不是使用默认的存储引擎。 |
ONLY_FULL_GROUP_BY | 启用严格的 SQL 模式,要求 GROUP BY 子句中的列必须是 SELECT 列表中的非聚合列或聚合函数。 |
ERROR_FOR_DIVISION_BY_ZERO | 在严格模式下,对于除零错误会产生错误而不是警告。 |
NO_ZERO_DATE | 禁止日期或日期时间列插入 ‘0000-00-00’。如果启用,这将生成错误。 |
NO_ZERO_IN_DATE | 禁止 ‘0000-00-00’ 格式的日期或日期时间值。 |
ANSI_QUOTES | 启用 ANSI_QUOTES 模式,使双引号成为标识符引用的引号字符,而不是单引号。 |
IGNORE_SPACE | 允许空格后面的多个空格在比较时被忽略。 |
PIPES_AS_CONCAT | 将 || 视为字符串连接运算符,而不是作为位操作符 |