mysql 可以运行在不同的 SQL Mode模式下,不同的SQL Mode定义了不同的SQL语法,有不同的数据校验规则。
SQL Mode的作用:
- 不同的mode可以完成不同严格程度的数据校验,保障数据的准确性。
- 改变mode能够更方便的进行数据在不同库中的迁移。
SQL Mode的种类:
- ONLY_FULL_GROUP_BY:这个模式会对group by 进行合法性检查,如果在select中的列没有在group by中出现则被认为是不合法的。
- STRICT_TRANS_TABLES:严格模式,会对数据进行严格的校验,错误数据不能插入。
- NO_ZERO_IN_DATE:该模式影响日期中的月份和天数可否为0,依赖于严格模式是否被启用。
- ERROR_FOR_DIVISION_BY_ZERO:该模式未启用则0除操作将会插入空值而不产生警告。
- NO_AUTO_CREATE_USER:禁止使用grant语句自动创建用户,除非认证信息被指定。
- NO_ENGINE_SUBSTITUTION:当执行crate语句或alter语句指定的存储引擎没有启用或未编译,控制默认存储引擎自动切换。
以上总结参考:https://mp.weixin.qq.com/s/hTzqTCqJ6uqo9slO47XVgQ、https://www.cnblogs.com/smallzhen/p/14063668.html