MySQL校對(duì)規(guī)則(COLLATION)的具體使用
簡(jiǎn)介
本文介紹MySQL的校對(duì)規(guī)則。
MySQL的校對(duì)規(guī)則
- 兩個(gè)不同的字符集不能有相同的校對(duì)規(guī)則。
- 每個(gè)字符集有一個(gè)默認(rèn)校對(duì)規(guī)則。例如:
- utf8mb4默認(rèn)校對(duì)規(guī)則:utf8mb4_general_ci。
- utf8默認(rèn)校對(duì)規(guī)則:utf8_general_ci。
- 存在校對(duì)規(guī)則命名約定:它們以其相關(guān)的字符集名開(kāi)始,通常包括一個(gè)語(yǔ)言名,并且以_ci(大小寫(xiě)不敏感)、_cs(大小寫(xiě)敏感)或_bin(二進(jìn)制,大小寫(xiě)敏感)結(jié)束。
校對(duì)規(guī)則列舉
- utf8mb4_general_ci
- utf8mb4_unicode_ci
- utf8mb4_general_cs
- utf8mb4_bin
//不存在utf8_unicode_cs
查看校對(duì)規(guī)則
查看支持的校驗(yàn)規(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 |
查看本地的校驗(yàn)規(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 | +----------------------+--------------------+
修改校對(duì)規(guī)則
修改數(shù)據(jù)庫(kù)配置后,不會(huì)對(duì)已經(jīng)存在的表造成影響,如要生效需要修改特定列的排序規(guī)則。優(yōu)先級(jí):列>表>數(shù)據(jù)庫(kù)>服務(wù)器。
對(duì)已存在的表修改
# 修改數(shù)據(jù)庫(kù): 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)建表時(shí)指定
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ū)別
| 項(xiàng) | utf8mb4_unicode_ci | utf8mb4_general_ci | 總結(jié) |
| 準(zhǔn)確性 | 基于標(biāo)準(zhǔn)的Unicode來(lái)排序和比較,能夠在各種語(yǔ)言之間精確排序 | 沒(méi)有實(shí)現(xiàn)Unicode排序規(guī)則,在遇到某些特殊語(yǔ)言或字符時(shí),排序結(jié)果可能不是所期望的。 | 絕大多數(shù)情況下,特殊字符的順序不需要那么精確。 |
| 性能 | 在特殊情況下,Unicode排序規(guī)則為了能夠處理特殊字符的情況,實(shí)現(xiàn)了略微復(fù)雜的排序算法。 | 在比較和排序的時(shí)候更快 | 絕大多數(shù)情況下,不會(huì)發(fā)生此類(lèi)復(fù)雜比較。 |
總結(jié):
utf8_unicode_ci比較準(zhǔn)確,utf8_general_ci速度比較快。
通常情況下 utf8_general_ci 的準(zhǔn)確性就夠我們用的了,在我看過(guò)很多程序源碼后,發(fā)現(xiàn)它們大多數(shù)也用的是utf8_general_ci,所以新建數(shù)據(jù) 庫(kù)時(shí)一般選用utf8_general_ci就可以了。
如果是utf8mb4那么對(duì)應(yīng)的就是 utf8mb4_general_ci utf8mb4_unicode_ci
到此這篇關(guān)于MySQL校對(duì)規(guī)則(COLLATION)的具體使用的文章就介紹到這了,更多相關(guān)MySQL 校對(duì)規(guī)則內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL專(zhuān)用服務(wù)器自動(dòng)配置參數(shù)的實(shí)現(xiàn)
本文主要介紹了MySQL專(zhuān)用服務(wù)器自動(dòng)配置參數(shù)的實(shí)現(xiàn),MySQL8.0推出了專(zhuān)用數(shù)據(jù)庫(kù)服務(wù)器自動(dòng)配置參數(shù),通過(guò)打開(kāi)innodb_dedicated_server,下面就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下2024-09-09
Mysql快速插入千萬(wàn)條數(shù)據(jù)的實(shí)戰(zhàn)教程
這篇文章主要給大家介紹了關(guān)于Mysql快速插入千萬(wàn)條數(shù)據(jù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用
本文主要介紹了mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
SQL中where語(yǔ)句的用法及實(shí)例代碼(條件查詢(xún))
WHERE如需有條件地從表中選取數(shù)據(jù),可將WHERE 子句添加到SELECT語(yǔ)句,下面這篇文章主要給大家介紹了關(guān)于SQL中where語(yǔ)句的用法及實(shí)例(條件查詢(xún))的相關(guān)資料,需要的朋友可以參考下2022-10-10
MySQL SUM()帶條件的求和方法與多條件的求和方法解讀
這篇文章主要介紹了MySQL SUM()帶條件的求和方法與多條件的求和方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
MySQL數(shù)據(jù)庫(kù)所在服務(wù)器磁盤(pán)滿了的故障分析和解決方法
這篇文章主要給大家介紹了MySQL數(shù)據(jù)庫(kù)所在服務(wù)器磁盤(pán)滿了的故障分析和解決方法,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-02-02

