MySQL中的排序規則
阿新 • • 發佈:2019-02-12
在新建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';
通過執行結果可以看到,使用這種排序規則確實是不區分大小寫的。
大小寫敏感的需求還是要是應用程式的需求而定的。