1. 程式人生 > >mysql ANSI_QUOTES 這個sql_mode的作用

mysql ANSI_QUOTES 這個sql_mode的作用

哥哥 cnblogs ati 我們 函數 bold django 平時 sql

首先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 語句中的表名直接用"號引起來就行了。

---

mysql ANSI_QUOTES 這個sql_mode的作用