MySQL-大小写规范及sql_mode设置

一、SQL大小写规范

1、在SQL中,关键字和函数名是不缺分字母大小写的,但是在不同平台可能会遇到大小写问题,以 window 和 Linux为例,window下大小写是不敏感的,而在linux下 大小写是敏感的,可通过以下命令查看:

  • windows下:
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)
  • linux下:
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 参数说明:

  • 默认为 0 ,表示 大小写敏感
  • 设置为1,表示 大小写不敏感,创建 数据库表都是以小写存放,对sql语句也是转换为小写进行查找
  • 设置为2,表示 在创建数据库表时依据创建语句格式进行存放,查找时转换为小写格式进行处理

3、在linux下大小写规范说明

  • 数据库、表名、表的别名、变量名 是严格区分大小写的
  • 关键字、函数名 不区分大小写
  • 列名(列的别名) 在任何情况下均忽略大小写

4、Linux下设置大小写不敏感,执行以下语句,并添加 lower_case_table_names=1,重启服务

[root@rqtanc ~]# vim /etc/my.cnf
[root@rqtanc ~]# systemctl restart mysqld.service

二、sql_mode设置

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、设置

  • set global sql_mode = ‘相关值’;
  • set session sql_mode= ‘相关值’;
  • 永久设置,操作如下:
#启用编辑
[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 将 || 视为字符串连接运算符,而不是作为位操作符

相关推荐

  1. MySQL-大小写规范sql_mode设置

    2024-04-22 07:16:03       39 阅读
  2. Mysql设计规范

    2024-04-22 07:16:03       37 阅读
  3. 解决C#连接MySQL数据库报错: SslMode=None;

    2024-04-22 07:16:03       44 阅读
  4. MySQL设计开发&使用规范

    2024-04-22 07:16:03       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 07:16:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 07:16:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 07:16:03       87 阅读
  4. Python语言-面向对象

    2024-04-22 07:16:03       96 阅读

热门阅读

  1. 达梦数据库执行sql报错:数据溢出

    2024-04-22 07:16:03       31 阅读
  2. pollLast() 和poll啥区别

    2024-04-22 07:16:03       33 阅读
  3. Django老项目升级到新版本

    2024-04-22 07:16:03       44 阅读
  4. 第十五届蓝桥杯题解-握手

    2024-04-22 07:16:03       37 阅读
  5. 【技术】Spring Boot 将 Word 转换为 PDF 2.0 版本

    2024-04-22 07:16:03       39 阅读
  6. C#项目中bin目录下

    2024-04-22 07:16:03       38 阅读
  7. 基于SpringCloudAlibaba+Sentinel的分布式限流设计

    2024-04-22 07:16:03       36 阅读
  8. 搜索+剪枝,LeetCode 216. 组合总和 III

    2024-04-22 07:16:03       33 阅读
  9. 【iOS安全】iOS ARM汇编

    2024-04-22 07:16:03       37 阅读
  10. 组合总和(Lc39)——排序+剪枝+回溯

    2024-04-22 07:16:03       31 阅读
  11. 【无标题】axios的ts封装,记录一下(Vue3项目)

    2024-04-22 07:16:03       26 阅读
  12. STM32相关手册

    2024-04-22 07:16:03       30 阅读