-
定义
-
支持哪些SQL语法
- support what sql syntax
-
做哪种数据校验
- what kind of data validation check
-
设置
-
全局默认设置
- --sql-mode option
- set @@global.sql_mode
-
每个连接单独设置
- set @@session.sql_mode
-
分类
-
ANSI
- 标准SQL语法
-
STRICT_TRANS_TABLES
- 严格的sql语句校验
- 插入或者更新的值必须有效
- 对事务表的更新一旦有错则回滚
- 对非事务表的更新在第一行出错时放弃
- 对非事务表的更新在其他行出错时则自动做出正确的值调整
-
STRICT_ALL_TABLES
- 对非事务表,出错则停止,局部更新
-
TRADITIONAL
- 对待错误的值,给出错误而不是警告
- 立即终止
-
ALLOW_INVALID_DATES
- 检查日月,不检查年
- 只影响DATE和DATETIME
-
ANSI_QUOTES
- 双引号是标识符
- 不能用定义字符串了
-
ERROR_FOR_DIVISION_BY_ZERO
- 除0生成错误而不是警告
-
HIGH_NOT_PRECEDENCE
- NOT的优先级比较高
- 新版本的mysql是NOT优先级较低
-
IGNORE_SPACE
- 调用的时候允许函数名和"("之间有空格
- 这会导致系统的函数成为标识符,其他地方用这个名字的时候,要加引号
-
NO_AUTO_CREATE_USER
- 禁止grant语句创建无密码的新用户
-
NO_AUTO_VALUE_ON_ZERO
- 用于AUTO_INCREMENT列
- 0值不会被取下一个增量赋值
- 只有NULL才取增量赋值
-
NO_DIR_IN_CREATE
- 创建新表的时候,忽略INDEX DIRECTORY and DATA DIRECTORY
-
NO_ENGINE_SUBSTITUTION
- 在CREATE TABLE等指定存储引擎不可用的情况下,不使用默认的引擎替换
-
NO_UNSIGNED_SUBTRACTION
- 使用有符号数的减法
-
REAL_AS_FLOAT
- REAL原来是DOUBLE
- 设定为FLOAT
- 兼容其他数据库