留学生作业的SQL_MODE知识点介绍

留学生们在学习MYSQL数据库或者完成MYSQL数据库作业的时候,大多都手起刀落的从creat table到select,其中有一个MYSQL的底层基础知识点MYSQL SQL_MODE虽然用到的地方不多,但是在深入学习MYSQL数据的时候仍需要去了解,今天讲解一下MYSQL数据的SQL_MODE。

打开SQL命令编辑器,执行以下SQL:
show variables like ‘sql_mode’;
或者执行:
select @@sql_mode;

将会看到以下执行结果:
STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
*看到的结果根据不同的配置有所区别。

什么时SQL_MODE,顾名思义,即SQL_MODE为数据库SQL的工作模式(可以理解为设置参数), MYSQL常用的SQL_MODE模式有
STRICT_TRANS_TABLES: innodb在事务处理中的严格模式
STRICT_ALL_TABLES: 与 STRICT_TRANS_TABLES 类似
ERROR_FOR_DIVISION_BY_ZERO: 是否支持除数为0
ANSI_QUOTES: 影响数据库对双引号的判断
IGNORE_SPACE: SQL命令中空格的检查
ONLY_FULL_GROUP_BY: 如果启用此模式,则在 GROUP BY 语句中必须包含所有非聚合的列,否则 MySQL 会报错。
NO_ZERO_IN_DATE: 严格模式下的日期数值不能为”0000-00-00″
NO_ZERO_DATE: 日期数值不能为零,遇到数值为0的时候MYSQL会返回错误(非警告)。
ONLY_FULL_GROUP_BY: 影响group by聚合查询的SQL格式
NO_AUTO_VALUE_ON_ZERO: 设置后影响自增(auto increasement)是否能插入”0″
NO_AUTO_CREATE_USER: GRANT创建用户相关
NO_ENGINE_SUBSTITUTION: 检查MYSQL数据库引擎。
更多的SQL_MODE模式可以查阅MYSQL官方说明文档,不过需要注意的是: 不同的MYSQL版本所支持的SQL_MODE模式是有可能有所区别的
不同版本的区别可以参考: 不同MYSQL版本和字符集的问题

如何设置SQL_MODE
在MSYQL的配置文件中设置:
[mysqld]
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
#根据实际需要进行设置

大家在完成数据库作业的时候,通常只会简单的增删查改是很难完成的,在学习的时候需要更加全面的学习,更多的MYSQL SQL_MODE问题可以联系全A学霸™

wechat

扫码咨询,领取88折扣