MySQL中的排序規則

奮鬥的小青年_發表於2016-12-18

在新建MySQL資料庫或表的時候經常會選擇字符集和排序規則。資料庫用的字符集大家都知道是怎麼回事,那排序規則是什麼呢?

排序規則:是指對指定字符集下不同字元的比較規則。其特徵有以下幾點:

1、  兩個不同的字符集不能有相同的排序規則

2、  兩個字符集有一個預設的排序規則

3、  有一些常用的命名規則。如_ci結尾表示大小寫不敏感(caseinsensitive),_cs表示大小寫敏感(case sensitive),_bin表示二進位制的比較(binary).

在MySQL資料庫中,可以使用show collation來檢視支援的各種排序呢規則,我用的是MySQL 5.6.12-log版本的資料庫,支援219種排序規則。

為了易於資料擴充套件,一般我們建立資料庫都會選擇utf8字符集,那麼utf8字符集的預設排序規則是什麼呢?我們可以通過“show charset like 'utf8%' ”進行檢視。


Utf8的預設排序規則是“utf8_general_ci”,上文已經說了以“_ci”結尾的表示大小寫不敏感,我們可以來測試一下。

use test;
drop table if EXISTS test;
create table test(
	a varchar(1) not null
)COLLATE utf8_general_ci;
insert into test select 'a';
insert into test select 'A';


select * from test where a ='a';

通過執行結果可以看到,使用這種排序規則確實是不區分大小寫的。

大小寫敏感的需求還是要是應用程式的需求而定的。




相關文章