mysql 数据库 sql mode 的研究与整理

最近在看mysql5.7.18版本,关于sql mode 的配置,个人对其非常着迷,前后遇到过好几次;对于技术问题,我向来遇到问题我都是搞不清楚本质死不罢休的那种,所以还是写写,用文字记录下来整个细节:

安装好了mysql5.7.18版本以后,查看默认的sql_mode 的值:

mysql> select @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)



mysql> select @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


mysql> select @@sql_mode\G;
*************************** 1. row ***************************
@@sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)



上面的几个项,我们来一一分析并说明:

> ONLY_FULL_GROUP_BY

如果sql mode 中包括 only_full_group_by 的话,就是only_full_group_by 模式;

如果不包括only_full_group_by的话,就是非only_full_group_by模式;

首先我们来讲这个项的作用,然后再来说mysql 5.7以及后续版本默认开启这个项的缘故;

该项就是针对 group by 查询的,在group by 查询时,如果未开启 only_full_group_by 模式;

聚集函数或group by

具体详情可参考:  http://www.ywnds.com/?p=8184 

> STRICT_TRANS_TABLES

> NO_ZERO_IN_DATE

> NO_ZERO_DATE

> ERROR_FOR_DIVISION_BY_ZERO

> NO_AUTO_CREATE_USER

> NO_ENGINE_SUBSTITUTION


对sql mode 的详细说明,还是建议参考mysql官网上面的文档,非常的详细,不过都是英文的奥;

https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

以及sql mode 在mysql 5.7.x版本中的变化:

https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#SQL Mode Changes in MySQL 5.7




http://www.ywnds.com/?p=8184




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值