MySQL校對規(guī)則(COLLATION)的具體使用
簡介
本文介紹MySQL的校對規(guī)則。
MySQL的校對規(guī)則
- 兩個不同的字符集不能有相同的校對規(guī)則。
- 每個字符集有一個默認(rèn)校對規(guī)則。例如:
- utf8mb4默認(rèn)校對規(guī)則:utf8mb4_general_ci。
- utf8默認(rèn)校對規(guī)則:utf8_general_ci。
- 存在校對規(guī)則命名約定:它們以其相關(guān)的字符集名開始,通常包括一個語言名,并且以_ci(大小寫不敏感)、_cs(大小寫敏感)或_bin(二進(jìn)制,大小寫敏感)結(jié)束。
校對規(guī)則列舉
- utf8mb4_general_ci
- utf8mb4_unicode_ci
- utf8mb4_general_cs
- utf8mb4_bin
//不存在utf8_unicode_cs
查看校對規(guī)則
查看支持的校驗規(guī)則
mysql> SHOW COLLATION like 'utf8%'; +--------------------------+---------+-----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +--------------------------+---------+-----+---------+----------+---------+ | utf8_general_ci | utf8 | 33 | Yes | Yes | 1 | | utf8_bin | utf8 | 83 | | Yes | 1 | | utf8_unicode_ci | utf8 | 192 | | Yes | 8 | ... | utf8mb4_general_ci | utf8mb4 | 45 | Yes | Yes | 1 | | utf8mb4_bin | utf8mb4 | 46 | | Yes | 1 | | utf8mb4_unicode_ci | utf8mb4 | 224 | | Yes | 8 | | utf8mb4_icelandic_ci | utf8mb4 | 225 | | Yes | 8 |
查看本地的校驗規(guī)則
mysql> show global variables like '%coll%'; +----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +----------------------+--------------------+
修改校對規(guī)則
修改數(shù)據(jù)庫配置后,不會對已經(jīng)存在的表造成影響,如要生效需要修改特定列的排序規(guī)則。優(yōu)先級:列>表>數(shù)據(jù)庫>服務(wù)器。
對已存在的表修改
# 修改數(shù)據(jù)庫: ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin; # 修改表: ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; # 修改表字段: ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL ;
創(chuàng)建表時指定
CREATE TABLE `T` ( `name` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
utf8_general_ci 與 utf8_unicode_ci區(qū)別
| 項 | utf8mb4_unicode_ci | utf8mb4_general_ci | 總結(jié) |
| 準(zhǔn)確性 | 基于標(biāo)準(zhǔn)的Unicode來排序和比較,能夠在各種語言之間精確排序 | 沒有實現(xiàn)Unicode排序規(guī)則,在遇到某些特殊語言或字符時,排序結(jié)果可能不是所期望的。 | 絕大多數(shù)情況下,特殊字符的順序不需要那么精確。 |
| 性能 | 在特殊情況下,Unicode排序規(guī)則為了能夠處理特殊字符的情況,實現(xiàn)了略微復(fù)雜的排序算法。 | 在比較和排序的時候更快 | 絕大多數(shù)情況下,不會發(fā)生此類復(fù)雜比較。 |
總結(jié):
utf8_unicode_ci比較準(zhǔn)確,utf8_general_ci速度比較快。
通常情況下 utf8_general_ci 的準(zhǔn)確性就夠我們用的了,在我看過很多程序源碼后,發(fā)現(xiàn)它們大多數(shù)也用的是utf8_general_ci,所以新建數(shù)據(jù) 庫時一般選用utf8_general_ci就可以了。
如果是utf8mb4那么對應(yīng)的就是 utf8mb4_general_ci utf8mb4_unicode_ci
到此這篇關(guān)于MySQL校對規(guī)則(COLLATION)的具體使用的文章就介紹到這了,更多相關(guān)MySQL 校對規(guī)則內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL專用服務(wù)器自動配置參數(shù)的實現(xiàn)
本文主要介紹了MySQL專用服務(wù)器自動配置參數(shù)的實現(xiàn),MySQL8.0推出了專用數(shù)據(jù)庫服務(wù)器自動配置參數(shù),通過打開innodb_dedicated_server,下面就來詳細(xì)的介紹一下,感興趣的可以了解一下2024-09-09
Mysql快速插入千萬條數(shù)據(jù)的實戰(zhàn)教程
這篇文章主要給大家介紹了關(guān)于Mysql快速插入千萬條數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用
本文主要介紹了mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
MySQL SUM()帶條件的求和方法與多條件的求和方法解讀
這篇文章主要介紹了MySQL SUM()帶條件的求和方法與多條件的求和方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
MySQL數(shù)據(jù)庫所在服務(wù)器磁盤滿了的故障分析和解決方法
這篇文章主要給大家介紹了MySQL數(shù)據(jù)庫所在服務(wù)器磁盤滿了的故障分析和解決方法,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-02-02

