与其他数据库不同,MySQL 可以运行不同的SQL Mode(SQL 模式)下。SQL Mode 定义了
MySQL 应支持的SQL 语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。
在MySQL 中,SQL Mode 常用来解决下面几类问题。
1、通过设置SQL Mode,可以完成不同严格程度的数据校验,有效地保障数据准确性。
2、通过设置SQL Mode 为ANSI 模式,来保证大多数SQL 符合标准的SQL 语法,这样应用在
不同数据库之间进行迁移时,则不需要对业务SQL 进行较大的修改。
3、在不同数据库之间进行数据迁移之前,通过设置SQL Mode 可以使MySQL 上的数据更方
便地迁移到目标数据库中。
熟悉并了解经常使用的SQL Mode 会帮助用户更好地使用它。下表总结出了常用的SQL Mode 值及其说明。
MySQL 中的SQL Mode
sql_mode 值 描述
ANSI 等同于REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE 和ANSI
组合模式,这种模式使语法和行为更符合标准的SQL
STRICT_TRANS_TA /BLES STRICT_TRANS_TABLES 适用于事务表和非事务表,它是严格模式,不允许非法日期,
也不允许超过字段长度的值插入字段中,对于插入不正确的值给出错误而不是警告
TRADITIONAL TRADITIONAL 模式等同于STRICT_TRANS_TABLES、STRICT_ALL_TABLES、
NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、TRADITIONAL
和NO_AUTO_CREATE_USER 组合模式,所以它也是严格模式,对于插入不正确的值是
给出错误而不是警告。可以应用在事务表和非事务表,用在事务表时,只要出现错误
就会立即回滚