建立mysql的表時,如果
collate選擇uft-8_general_ci ,則表示一般比較,不區分大小寫,
而選擇utf8-bin表示嚴格區分大小寫。
我們將collate稱為排序規則,建立表時,一般會選擇排序規則,列的排序規則預設與表的相同
CREATE TABLE `t_user` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8_unicode_ci;
CREATE TABLE `t_user` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8_bin;
當collate=
uft-8_general_ci
時
對應的效果是:
SELECT * from t_user where name=‘abc’; 與SELECT * from t_user where name=‘Abc’;
效果一致,不區分大小寫
當collate=
uft8-bin
時
SELECT * from t_user where name=‘abc’; 與SELECT * from t_user where name=‘Abc’;
查詢的效果不同
值得注意的是,列可以選擇自己的collate,列的優先順序高於表的collate優先順序,透過navicate可以設定表和列的collate,如下圖
列的collate
表的collate的設定
表的collate