MySQL大小寫小結

來源:互聯網
上載者:User

小結:

1.資料庫名大小寫敏感,不可參數調配

2.表名大小寫敏感(可參數調配lower_case_table_names),表別名敏感大小寫

3.列名和列的別名不敏感大小寫

4.變數名嚴格敏感大小寫,不可參數調配

5.執行目錄大小寫敏感,可參數調配(lower_case_file_system)

6.windows下表名和執行目錄名預設都不區分大小寫,Unix和linux區分大小寫

7.命名的大小寫敏感和欄位內查詢大小寫敏感不是一回事,欄位內查詢大小寫敏感通過字元集或者binary關鍵字指定,預設不區分大小寫


lower_case_table_names參數影響表名的大小寫:0表示區分大小寫,1表示不區分大小寫

lower_case_file_system參數影響mysql各種目錄的大小寫,0表示不區分大小寫,1表示區分


欄位內大小寫區分

受字元集的檢驗字元集影響,如utf8_bin,utf8_general_ci,utf8_general_cs,_bin表示用二進位儲存資料,且區分大小寫,ci表示不區分大小寫,cs表示區分大小寫(貌似該種校正字元已經被淘汰了),校正字元集可分為四種:伺服器層、資料庫層、表層、欄位層(從高往低),真正決定的因素是欄位層的檢驗字元集,如果沒有指定則預設從上一層繼承過來,如表繼承欄位的資料庫層,欄位層繼承表層,資料庫層繼承伺服器層,伺服器層則需要設定,如果不設定預設為latin1_general_ci

若指定某欄位校正字元為utf8_bin,則該欄位中a和A是不一樣的!

例子:

CREATE TABLE t_bin(vr VARCHAR(20) NOT NULL PRIMARY KEY)COLLATE=utf8_bin;   CREATE TABLE t_ci(vr VARCHAR(20) NOT NULL PRIMARY KEY)COLLATE=utf8_general_ci;INSERT INTO t_bin (vr) VALUES ('a');INSERT INTO t_bin (vr) VALUES ('A');INSERT INTO t_ci (vr) VALUES ('b');INSERT INTO t_ci (vr) VALUES ('B');4 queries executed, 3 success, 1 errors, 0 warnings查詢:insert into t_bin (vr) values ('a')共 1 行受到影響執行耗時   : 0 sec傳送時間   : 0 sec總耗時      : 0 sec--------------------------------------------------查詢:INSERT INTO t_bin (vr) VALUES ('A')共 1 行受到影響執行耗時   : 0 sec傳送時間   : 0 sec總耗時      : 0 sec--------------------------------------------------查詢:INSERT INTO t_ci (vr) VALUES ('b')共 1 行受到影響執行耗時   : 0 sec傳送時間   : 0 sec總耗時      : 0 sec--------------------------------------------------查詢:INSERT INTO t_ci (vr) VALUES ('B')錯誤碼: 1062Duplicate entry 'B' for key 'PRIMARY'執行耗時   : 0 sec傳送時間   : 0 sec總耗時      : 0 sec

可以看到插入t_bin(編碼為_bin),a和A區分開來

而插入t_ci(編碼為_ci),b和B不能區分開來,如果預設某欄位上不是_bin檢驗編碼,則可以用binary關鍵字指定對大小寫敏感

如:

CREATE TABLE t_no(vr VARCHAR(20) NOT NULL )COLLATE=utf8_general_ci;INSERT INTO t_no (vr) VALUES ('a');INSERT INTO t_no (vr) VALUES ('A');INSERT INTO t_no (vr) VALUES ('b');INSERT INTO t_no (vr) VALUES ('B'); mysql> SELECT * FROM t_no WHERE vr='a';+----+| vr |+----+| a  || A  |+----+2 rows in set (0.00 sec)mysql> SELECT * FROM t_no WHERE binary vr='a';+----+| vr |+----+| a  |+----+1 row in set (0.00 sec)


建議:一般建議表名上不區分大小寫,即將lower_case_table_names設定為1

本文出自 “原下” 部落格,請務必保留此出處http://qdjalone.blog.51cto.com/1222376/1304539

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.