最近在学习《MySQL技术内幕:SQL编程》并做了笔记,本博客是一篇笔记类型博客,分享出来,方便自己以后复习,也可以帮助其他人
SQL_MODE:MySQL特有的一个属性,用途很广,可以通过设置属性来实现某些功能支持
# 全局的SQL_MODE
SELECT @@global.sql_mode;
# 当前会话的SQL_MODE
SELECT @@session.sql_mode;
SQL_Mode默认值是为空的,对于SQL_mode的设置可以在mysql配置文件(my.ini或者my.cnf),或者直接通过命令设置
严格模式:是指将sql_mode设置为STRICT_TRANS_TABLES或者STRICT_ALL_TABLES,设置为严格模式是不允许非法的操作的,比如将Null值写到非空要求的字段里,或者写入不合法的日期数据,比如’2019-09-40’
SET GLOBAL sql_mode ='STRICT_TRANS_TABLES';
SET GLOBAL sql_mode ='STRICT_ALL_TABLES';
数据原本有数据的情况,就不要直接set,用concat连接起来:
set @@session.sql_mode=concat(@@sql_mode,',IGNORE_SPACE');
CREATE TABLE t (a CHAR(10));
INSERT INTO t SELECT 'a';
在默认情况下查询是这样的,如果设置PAD_CHAR_TO_FULL_LENGTH,查询出来的是:
下面给出几种选项的组合: