MySQL字段是否區(qū)分大小寫,這是一個(gè)比較常見(jiàn)的問(wèn)題。實(shí)際上,答案是取決于數(shù)據(jù)庫(kù)的配置。默認(rèn)情況下,MySQL是不區(qū)分字段大小寫的。
mysql>CREATE TABLE MyTable ( `id` int(11) NOT NULL AUTO_INCREMENT, `MyField` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在上面的示例中,我們使用`MyField`作為字段名,而不是常見(jiàn)的`myfield`或`MYFIELD`。如果我們執(zhí)行以下查詢,我們會(huì)看到它確實(shí)是區(qū)分大小寫的。
mysql>SELECT MyField FROM MyTable; ERROR 1054 (42S22): Unknown column 'MyField' in 'field list'
然而,我們可以通過(guò)將配置文件中的lower_case_table_names參數(shù)設(shè)置為1或2(Windows默認(rèn)為1,Linux為0)來(lái)更改MySQL的大小寫規(guī)則。
[mysqld] lower_case_table_names=1
當(dāng)我們將該參數(shù)設(shè)置為1時(shí),MySQL將強(qiáng)制將所有表名和字段名轉(zhuǎn)換為小寫,這樣我們就無(wú)法使用`MyField`而只能使用`myfield`。
mysql>SELECT myfield FROM MyTable; +---------+ | myfield | +---------+ | Hello | +---------+ 1 row in set (0.00 sec)
總的來(lái)說(shuō),MySQL默認(rèn)情況下不區(qū)分字段的大小寫,但是可以通過(guò)更改lower_case_table_names參數(shù)來(lái)改變這種規(guī)則。