欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL校對(duì)規(guī)則(COLLATION)的具體使用

 更新時(shí)間:2022年08月09日 15:18:30   作者:IT利刃出鞘  
本文主要介紹了MySQL校對(duì)規(guī)則(COLLATION)的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

簡(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_ciutf8mb4_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)文章

最新評(píng)論