首先sql_mode用于mysql的行为,sql_mode的多个值之间用','分隔;
1、平时sql_mode的值是多少?
select @@session.sql_mode; +---------------------------------------------------------+ | @@session.sql_mode | +---------------------------------------------------------+ | STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION | +---------------------------------------------------------+
2、如果我放荡不羁想建一张表、它的表名就叫table 那我要怎么做才好?
create table `table`(x int); Query OK, 0 rows affected (0.01 sec)
看到了没有这个时候我要用'反引号' 把table 这个表名给引起来;哥哥我大一的时候真的是找到不这个’反引号‘怎么打出来呀!
为了初学者不至于因为打不出‘反引号’而不能放荡不羁,于是ANSI_QUOTES出来了;有了它我们只有把关键字用‘双引号’引起来
就对了。
3、给sql_mode加上ANSI_QUOTES
set @@session.sql_mode=concat('STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION',',ANSI_QUOTES'); Query OK, 0 rows affected, 1 warning (0.00 sec)
#注意mysql中两个字符串是不能直接用+号连接起来的,要用concat函数。
4、查看mysql有ANSI_QUOTES后有多牛逼
mysql> show tables; +-------------------+ | Tables_in_tempdb | +-------------------+ | django_migrations | | polls_user | | t2 | | table | +-------------------+ 4 rows in set (0.00 sec) mysql> mysql> mysql> mysql> drop table "table"; Query OK, 0 rows affected (0.00 sec)
看到了吧、在drop table 语句中的表名直接用"号引起来就行了。
---