1、是否區分 庫名、表名、列名、別名 的大小寫?
[ Linux] MySQL在Linux下數據庫名、表名、列名、別名大小寫規則:
1、數據庫名與表名是嚴格區分大小寫
2、表的別名是嚴格區分大小寫
3、列名與列的別名在所有的情況下均是忽略大小寫的
4、變量名也是嚴格區分大小寫的
改變表名的大小寫區分規則的方法,修改/etc/my.cnf,在[mysqld]後添加添加lower_case_table_names=1,重啓MySQL服務,若設置成功,則不再區分表名的大小寫。
[ Windows ] MySQL在Windows下數據庫名、表名、列名、別名都不區分大小寫。
如果想大小寫區分則在my.ini 裏面的mysqld部分 ,加入 lower_case_table_names=0
注意:Windows中即使改了這個設置,在查詢時還是不會區分大小寫。只是在導入導出時會對大小寫有區別。
2、查詢時where條件是否區分大小寫
取決於庫或表上的collation(覈對、對比) 屬性的值。
例如我們使用UTF8編碼,collate使用utf8_bin時區分大小寫,collate使用utf8_general_ci時不區分大小寫
建庫語句:
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; (不區分大小寫)
建表語句:
CREATE TABLE test2(id int(10),name char(10))
ENGINE = InnoDB
COLLATE = 'utf8_bin' (區分大小寫)
建表時指明瞭collation,則對對錶有效。建表時未指明collation,則使用庫上的collation屬性。