> MySQL 5.7 中的默认 SQL 模式包括这些 模式:[`ONLY_FULL_GROUP_BY`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by)、[`STRICT_TRANS_TABLES`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_strict_trans_tables)、[`NO_ZERO_IN_DATE`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_zero_in_date)、[`NO_ZERO_DATE`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_zero_date)、[`ERROR_FOR_DIVISION_BY_ZERO`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_error_for_division_by_zero)、[`NO_AUTO_CREATE_USER`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_auto_create_user)和[`NO_ENGINE_SUBSTITUTION`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_engine_substitution)。
MySQL 8.0 中的默认 SQL 模式包括这些 模式:[`ONLY_FULL_GROUP_BY`](https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_only_full_group_by)、[`STRICT_TRANS_TABLES`](https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_strict_trans_tables)、[`NO_ZERO_IN_DATE`](https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_no_zero_in_date)、[`NO_ZERO_DATE`](https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_no_zero_date)、[`ERROR_FOR_DIVISION_BY_ZERO`](https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_error_for_division_by_zero)、 和[`NO_ENGINE_SUBSTITUTION`](https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_no_engine_substitution)。
## **ONLY_FULL_GROUP_BY**
拒绝选择列表、条件或列表引用的非聚合列的查询,这些列既没有在子句中命名,也没有在功能上依赖于(由列唯一确定的)列。
## **STRICT_TRANS_TABLES**
如果设置STRICT模式,则如果数据写入时,如果数据不符合字段定义(字符串超出长度、数值类型数据超出范围、违反not null约束等),SQL会报错。
如果不设置STRICT模式,会对异常数据进行截断处理,SQL会显示Warning,但不报错。
### STRICT_TRANS_TABLES
如果设置strict_trans_tables SQL_MODE,则只影响事物型存储引擎。不影响往非事务型引擎中写入非法数据。
### STRICT_ALL_TABLES
对于非事务型存储引擎如MyISAM,可能会出现批量Insert中部分数据写入成功、部分数据写入失败的情况。事务型存储引擎如InnoDB不存在该问题。
## **NO_ZERO_IN_DATE**
服务器是否允许年部分不为零但月或日部分为0的日期。NO_ZERO_IN_DATE的效果还取决于是否启用了严格SQL模式。“2010-00-01“2010-01-00”2010-00-01“2010-00-01”。
- 如果不启用此模式,则允许零部件的日期,并且插入不会产生警告。
- 如果启用此模式,则插入零部分的日期,并产生警告。“0000-00-00”
- 如果启用了此模式和严格模式,则不允许包含零部分的日期,并且插入会产生错误
*NO_ZERO_IN_DATE已弃用。NO_ZERO_IN_DATE不是严格模式的一部分,但应该与严格模式一起使用,默认情况下是启用的。如果启用了NO_ZERO_IN_DATE而没有同时启用严格模式,则会出现警告,反之亦然。*
## **NO_ZERO_DATE**
模式影响服务器是否允许'0000-00-00'作为有效日期。它的效果还取决于是否启用了严格SQL模式。
- 如果未启用此模式,则允许使用'0000-00-00',并且插入不会产生警告。
- 如果启用此模式,则允许使用'0000-00-00',并且插入会产生警告。
- 如果启用了此模式和严格模式,则不允许使用'0000-00-00',并且插入会产生错误
*NO_ZERO_DATE已弃用。NO_ZERO_DATE不是严格模式的一部分,但应该与严格模式一起使用,默认情况下是启用的。如果启用了NO_ZERO_DATE而没有同时启用严格模式,则会出现警告,反之亦然*
## **ERROR_FOR_DIVISION_BY_ZERO**
模式影响除零的处理,包括MOD(N,0)。对于数据更改操作(INSERT、UPDATE),其效果还取决于是否启用了严格的SQL模式。
- 如果不启用此模式,除零将插入NULL并且不产生警告。
- 如果启用此模式,除零将插入NULL并产生警告。
- 如果启用了此模式和严格模式,除零会产生错误,
## **NO_AUTO_CREATE_USER**
防止GRANT语句自动创建新用户帐户,除非指定了身份验证信息。
## **NO_ENGINE_SUBSTITUTION**
当CREATE TABLE或ALTER TABLE等语句指定禁用或未编译的存储引擎时,控制默认存储引擎的自动替换。缺省情况下,NO_ENGINE_SUBSTITUTION是启用的。
禁用NO_ENGINE_SUBSTITUTION后,CREATE TABLE将使用默认引擎,如果所需的引擎不可用,则会出现警告。对于ALTER TABLE,会出现警告,并且不会更改表。
启用NO_ENGINE_SUBSTITUTION后,如果所需的引擎不可用,则会发生错误,并且不会创建或更改表。
- PHP
- PHP 核心架构
- PHP 生命周期
- PHP-FPM 详解
- PHP-FPM 配置优化
- PHP 命名空间和自动加载
- PHP 运行模式
- PHP 的 Buffer(缓冲区)
- php.ini 配置文件参数优化
- 常见面试题
- 常用函数
- 几种排序算法
- PHP - 框架
- Laravel
- Laravel 生命周期
- ThinkPHP
- MySQL
- 常见问题
- MySQL 索引
- 事务
- 锁机制
- Explain 使用分析
- MySQL 高性能优化规范
- UNION 与 UNION ALL
- MySQL报错:sql_mode=only_full_group_by
- MySQL 默认的 sql_mode 详解
- 正则表达式
- Redis
- Redis 知识
- 持久化
- 主从复制、哨兵、集群
- Redis 缓存击穿、穿透、雪崩
- Redis 分布式锁
- RedisBloom
- 网络
- 计算机网络模型
- TCP
- UDP
- HTTP
- HTTPS
- WebSocket
- 常见几种网络攻击方式
- Nginx
- 状态码
- 配置文件
- Nginx 代理+负载均衡
- Nginx 缓存
- Nginx 优化
- Nginx 配置 SSL 证书
- Linux
- 常用命令
- Vim 常用操作命令
- Supervisor 进程管理
- CentOS与Ubuntu系统区别
- Java
- 消息队列
- 运维
- RAID 磁盘阵列
- 逻辑分区管理 LVM
- 业务
- 标准通信接口设计
- 业务逻辑开发套路的三板斧
- 微信小程序登录流程
- 7种Web实时消息推送方案
- 用户签到
- 用户注册-短信验证码
- SQLServer 删除同一天用户重复签到
- 软件研发完整流程
- 前端
- Redux
- 其他
- 百度云盘大文件下载
- 日常报错记录
- GIT
- SSL certificate problem: unable to get local issuer certificate
- NPM
- reason: connect ECONNREFUSED 127.0.0.1:31181
- SVN
- SVN客户端无法连接SVN服务器,主机积极拒绝
- Python
- 基础
- pyecharts图表
- 对象
- 数据库
- PySpark
- 多线程
- 正则
- Hadoop
- 概述
- HDFS