MySQL的SQL MODE

目录

举例:

--常见SQL mode  


--mysql8 sql_mode 官方文档
https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html

--查看全局的SQL MODE

select @@global.sql_mode;

--查看当前会话的SQL MODE

select @@session.sql_mode;

--运行时修改全局的SQL mode

set global sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";

--修改当前会话的SQL mode

set session sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";

--删除当前会话的SQL mode

set session sql_mode = sys.list_drop(@@session.sql_mode,'ONLY_FULL_GROUP_BY');

--增加SQL mode模式

set session sql_mode = sys.list_add(@@session.sql_mode,'PIPES_AS_CONCAT');
举例:
CREATE TABLE test_stu (
    a VARCHAR(20),
    b VARCHAR(255)
);
INSERT INTO test_stu(a, b) VALUES('test1', 'test11');

 这是添加sql mode之前的查询结果

添加PIPES_AS_CONCAT模式

set session sql_mode = sys.list_add(@@session.sql_mode,'PIPES_AS_CONCAT');

添加后查询结果

--常见SQL mode  

PIPES_AS_CONCAT            :将"||"视为字符串的连接操作符而非或运算符,与Oracle数据库的处理方式相同。
STRICT_TRANS_TABLES        :在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制。
REAL_AS_FLOAT              :把REAL类型看成FLOAT类型
ANSI_QUOTES                :启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符。
IGNORE_SPACE               :函数名称和括号之间允许有空格。
ONLY_FULL_GROUP_BY         :要求SELECT语句中的列要么出现在GROUP BY子句中,要么被包含在聚合函数内。如果列没有在GROUP BY子句中出现,且又不是聚合函数的一部分,则该SQL语句不合法。
NO_AUTO_VALUE_ON_ZERO      :影响自增长列的插入。通常插入0或NULL时会生成下一个自增长值,但启用此模式后,如果想明确插入值为0,则需要使用此模式。
NO_ZERO_IN_DATE            :在严格模式下,不允许日期和月份为零。
NO_ZERO_DATE               :设置该值后,数据库不允许插入零日期,如果尝试插入零日期会抛出错误而不是警告。
ERROR_FOR_DIVISION_BY_ZERO :在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如果不设置此模式,那么数据被零除时MySQL返回NULL。
NO_AUTO_CREATE_USER        :禁止GRANT创建密码为空的用户。
NO_ENGINE_SUBSTITUTION     :如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常。
NO_BACKSLASH_ESCAPES       :用于控制是否允许在SQL语句中使用反斜杠(\)作为转义字符。当设置为0时,表示不允许使用反斜杠作为转义字符;当设置为1时,表示允许使用反斜杠作为转义字符。
ANSI                       :等同于REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、ONLY_FULL_GROUP_BY几个模式的组合

相关推荐

  1. 解决C#连接MySQL数据库报错: SslMode=None;

    2024-01-29 14:52:02       43 阅读
  2. db2 SQLCODE=-1585和SQLSTATE=54048

    2024-01-29 14:52:02       32 阅读
  3. msSQLMySQL区别?

    2024-01-29 14:52:02       73 阅读
  4. MySQLMySQL执行计划

    2024-01-29 14:52:02       54 阅读
  5. MySqlMySQL结构

    2024-01-29 14:52:02       35 阅读

最近更新

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

    2024-01-29 14:52:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-29 14:52:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-29 14:52:02       82 阅读
  4. Python语言-面向对象

    2024-01-29 14:52:02       91 阅读

热门阅读

  1. flink源码分析 - jar包中提取主类和第三方依赖

    2024-01-29 14:52:02       45 阅读
  2. iOS 闭包和Block的区别

    2024-01-29 14:52:02       60 阅读
  3. Nginx加固安全策略,简单实用

    2024-01-29 14:52:02       57 阅读
  4. C51 单片机学习(文章链接汇总)

    2024-01-29 14:52:02       56 阅读
  5. 一个最小的振动分析系统设计

    2024-01-29 14:52:02       49 阅读
  6. 龙哥风向标 2023.1.5 GPT拆解

    2024-01-29 14:52:02       88 阅读
  7. KY98 棋盘游戏

    2024-01-29 14:52:02       55 阅读
  8. 图的邻接矩阵表示

    2024-01-29 14:52:02       55 阅读