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

MySQL中utf8mb4排序規(guī)則示例

 更新時(shí)間:2021年07月29日 14:34:00   作者:TeyGao  
本文主要介紹了MySQL中utf8mb4排序規(guī)則,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在MySQL中常見(jiàn)的utf8mb4排序規(guī)則有:

  • utf8mb4_0900_ai_ci
  • utf8mb4_unicode_ci
  • utf8mb4_general_ci

當(dāng)設(shè)置表的默認(rèn)字符集為utf8mb4字符集但未明確指定排序規(guī)則時(shí):

  • 在MySQL 5.7版本中,默認(rèn)排序規(guī)則為utf8mb4_general_ci。
  • 在MySQL 8.0版本中,默認(rèn)排序規(guī)則為utf8mb4_0900_ai_ci。

由于utf8mb4_0900_ai_ci排序規(guī)則時(shí)MySQL 8.0引入的排序規(guī)則,因此將MySQL 8.0版本的表導(dǎo)入到MySQL 5.7或MySQL 5.6版本時(shí),會(huì)存在字符集無(wú)法識(shí)別的問(wèn)題。

[Err] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'

參數(shù)控制

在MySQL 5.6版本中,參數(shù)collation_server用于設(shè)置服務(wù)器級(jí)別的默認(rèn)排序規(guī)則。

  • 如果服務(wù)啟動(dòng)時(shí)未指定參數(shù)collation_database的值,則默認(rèn)繼承參數(shù)collation_server的值。
  • 如果創(chuàng)建數(shù)據(jù)庫(kù)時(shí)未指定排序規(guī)則,則默認(rèn)使用參數(shù)collation_database的值。

參數(shù)character_set_database和collation_database在MySQL 5.7版本中被遺棄并將在后續(xù)版本中移除。
MySQL新增參數(shù)default_collation_for_utf8mb4用于控制使用utf8mb4字符集時(shí)的默認(rèn)排序規(guī)則,取值為utf8mb4_0900_ai_ci或utf8mb4_general_ci
參數(shù)default_collation_for_utf8mb4在下列條件中生效:

  • 使用SHOW COLLATION and SHOW CHARACTER SET 命令時(shí)。
  • 在創(chuàng)建庫(kù)或修改庫(kù)指定utf8mb4但未指定編碼規(guī)則時(shí)。
  • 在創(chuàng)建表或修改表指定utf8mb4但未指定編碼規(guī)則時(shí)。
  • 在增加列或修改列指定utf8mb4但未指定編碼規(guī)則時(shí)。
  • 其他使用utf8mb4但未指定編碼規(guī)則時(shí)。

utf8mb4_unicode_ci和utf8mb4_general_ci對(duì)比

1、準(zhǔn)確性

  • utf8mb4_unicode_ci排序規(guī)則基于標(biāo)準(zhǔn)unicode進(jìn)行排序和比較,能處理特殊的字符,能在各種語(yǔ)音中精確排序。
  • utf8mb4_general_ci排序規(guī)則沒(méi)有基于標(biāo)準(zhǔn)unicode,無(wú)法處理部分特殊字符。

2、性能

  • utf8mb4_general_ci排序規(guī)則在排序性能上相對(duì)較好
  • utf8mb4_unicode_ci排序規(guī)則為處理特殊字符實(shí)現(xiàn)復(fù)雜的排序算法,性能略差
  • 在大部分場(chǎng)景下,兩者沒(méi)有明顯的性能差異

補(bǔ):MySQL--utf8mb4與等值查詢測(cè)試

測(cè)試腳本

## 刪除測(cè)試表
DROP TABLE IF EXISTS tb2001;
DROP TABLE IF EXISTS tb2002;
DROP TABLE IF EXISTS tb2003;

## 創(chuàng)建測(cè)試表
CREATE TABLE tb2001(
id INT AUTO_INCREMENT PRIMARY KEY,
c1 VARCHAR(100) COLLATE utf8mb4_unicode_ci,
c2 VARCHAR(100) COLLATE utf8mb4_bin
)ENGINE=INNODB DEFAULT CHARSET=utf8mb4 ;

CREATE TABLE tb2002(
id INT AUTO_INCREMENT PRIMARY KEY,
c1 VARCHAR(100) COLLATE utf8mb4_general_ci,
c2 VARCHAR(100) COLLATE utf8mb4_bin
)ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

CREATE TABLE tb2003(
id INT AUTO_INCREMENT PRIMARY KEY,
c1 VARCHAR(100) COLLATE utf8mb4_0900_ai_ci,
c2 VARCHAR(100) COLLATE utf8mb4_bin
)ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

## 插入測(cè)試數(shù)據(jù)
INSERT INTO tb2001(c1,c2)VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);
INSERT INTO tb2002(c1,c2)VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);
INSERT INTO tb2003(c1,c2)VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);

## 等值查詢測(cè)試
SELECT * FROM tb2001 WHERE c1=0xF09F8D83;
SELECT * FROM tb2002 WHERE c1=0xF09F8D83;
SELECT * FROM tb2003 WHERE c1=0xF09F8D83;

SELECT * FROM tb2001 WHERE c2=0xF09F8D83;
SELECT * FROM tb2002 WHERE c2=0xF09F8D83;
SELECT * FROM tb2003 WHERE c2=0xF09F8D83;

測(cè)試結(jié)果

mysql> SELECT * FROM tb2001 WHERE c1=0xF09F8D83;
+----+------+------+
| id | c1   | c2   |
+----+------+------+
|  1 | 🍃     | 🍃     |
|  2 | 🦊     | 🦊     |
|  3 | 🌠     | 🌠     |
+----+------+------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM tb2002 WHERE c1=0xF09F8D83;
+----+------+------+
| id | c1   | c2   |
+----+------+------+
|  1 | 🍃     | 🍃     |
|  2 | 🦊     | 🦊     |
|  3 | 🌠     | 🌠     |
+----+------+------+
3 rows in set (0.01 sec)

mysql> SELECT * FROM tb2003 WHERE c1=0xF09F8D83;
+----+------+------+
| id | c1   | c2   |
+----+------+------+
|  1 | 🍃     | 🍃     |
+----+------+------+
1 row in set (0.00 sec)

mysql> 
mysql> SELECT * FROM tb2001 WHERE c2=0xF09F8D83;
+----+------+------+
| id | c1   | c2   |
+----+------+------+
|  1 | 🍃     | 🍃     |
+----+------+------+
1 row in set (0.00 sec)

mysql> SELECT * FROM tb2002 WHERE c2=0xF09F8D83;
+----+------+------+
| id | c1   | c2   |
+----+------+------+
|  1 | 🍃     | 🍃     |
+----+------+------+
1 row in set (0.00 sec)

mysql> SELECT * FROM tb2003 WHERE c2=0xF09F8D83;
+----+------+------+
| id | c1   | c2   |
+----+------+------+
|  1 | 🍃     | 🍃     |
+----+------+------+
1 row in set (0.00 sec)

測(cè)試總結(jié)

  • 使用utf8mb4字符集能存儲(chǔ)特殊字符如表情符號(hào)。
  • utf8mb4_unicode_ci和utf8mb4_general_ci排序規(guī)則無(wú)法"正確匹配"特殊字符。
  • utf8mb4_0900_ai_ci排序規(guī)則能"正確匹配"特殊字符,但僅適用MySQL 8.0版本。
  • utf8mb4_bin排序規(guī)則基于二級(jí)制方式匹配特殊字符,能"正確匹配"特殊字符,適用于MySQL各個(gè)版本。

到此這篇關(guān)于MySQL中utf8mb4排序規(guī)則示例的文章就介紹到這了,更多相關(guān)MySQL utf8mb4排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Windows服務(wù)器下MySql數(shù)據(jù)庫(kù)單向主從備份詳細(xì)實(shí)現(xiàn)步驟分享

    Windows服務(wù)器下MySql數(shù)據(jù)庫(kù)單向主從備份詳細(xì)實(shí)現(xiàn)步驟分享

    將主服務(wù)器中的MySql數(shù)據(jù)庫(kù)同步到從服務(wù)器中,使得對(duì)主服務(wù)器的操作可以即時(shí)更新到從服務(wù)器,避免主服務(wù)器因環(huán)境或者網(wǎng)絡(luò)異常一時(shí)無(wú)法使用,達(dá)到備份效果,這篇文章整理的確實(shí)挺詳細(xì)的
    2012-05-05
  • MySQL 5.7.43下載安裝配置的超詳細(xì)教程

    MySQL 5.7.43下載安裝配置的超詳細(xì)教程

    這篇文章主要介紹了MySQL 5.7.43下載安裝配置的超詳細(xì)教程,本文通過(guò)實(shí)例圖文結(jié)合的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • MYSQL清空表和截?cái)啾韱?wèn)題

    MYSQL清空表和截?cái)啾韱?wèn)題

    這篇文章主要介紹了MYSQL清空表和截?cái)啾韱?wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • mysql中coalesce()的使用技巧小結(jié)

    mysql中coalesce()的使用技巧小結(jié)

    在mysql中,其實(shí)有不少方法和函數(shù)是很有用的,這次介紹一個(gè)叫coalesce的,拼寫(xiě)十分麻煩,但其實(shí)作用是將返回傳入的參數(shù)中第一個(gè)非null的值,下面這篇文章主要給大家介紹了在mysql中coalesce()使用技巧的相關(guān)資料,需要的朋友可以參考下。
    2017-06-06
  • 定位和優(yōu)化mysql慢查詢的常見(jiàn)方法分享

    定位和優(yōu)化mysql慢查詢的常見(jiàn)方法分享

    MySQL中的慢查詢(Slow Query)指執(zhí)行時(shí)間超過(guò)指定閾值的查詢語(yǔ)句,默認(rèn)閾值是long_query_time參數(shù)設(shè)置的秒值,MySQL有幾種常見(jiàn)的方法可以發(fā)現(xiàn)和獲取慢查詢,接下來(lái)小編將給大家詳細(xì)的介紹一下這些方法,需要的朋友可以參考下
    2023-08-08
  • MYSQL錯(cuò)誤:Can’t open file: ‘×××.MYI’ (errno: 145)修復(fù)方法

    MYSQL錯(cuò)誤:Can’t open file: ‘×××.MYI’ (errno: 14

    這個(gè)錯(cuò)誤是典型的mysql表受損造成的,解決的辦法就是修復(fù)表,這個(gè)問(wèn)題也是mysql經(jīng)常容易出現(xiàn)的,mysql表和索引損壞的幾率很大,但是修復(fù)也很方便
    2011-01-01
  • 詳解MySQL和Redis如何保證數(shù)據(jù)一致性

    詳解MySQL和Redis如何保證數(shù)據(jù)一致性

    MySQL與Redis都是常用的數(shù)據(jù)存儲(chǔ)和緩存系統(tǒng),為了提高應(yīng)用程序的性能和可伸縮性,很多應(yīng)用程序?qū)ySQL和Redis一起使用,其中MySQL作為主要的持久存儲(chǔ),而Redis作為主要的緩存,那么本文就給大家介紹一下MySQL和Redis如何保證數(shù)據(jù)一致性,需要的朋友可以參考下
    2023-08-08
  • MySQL中因一個(gè)雙引號(hào)錯(cuò)位引發(fā)的血案詳析

    MySQL中因一個(gè)雙引號(hào)錯(cuò)位引發(fā)的血案詳析

    這篇文章主要給大家介紹了關(guān)于MySQL中因一個(gè)雙引號(hào)錯(cuò)位引發(fā)的血案的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 關(guān)于mysql中時(shí)間日期類型和字符串類型的選擇

    關(guān)于mysql中時(shí)間日期類型和字符串類型的選擇

    大家好,本篇文章主要講的是關(guān)于mysql中時(shí)間日期類型和字符串類型的選擇,感興趣的朋友趕快來(lái)看一看吧,希望對(duì)你有幫助
    2021-11-11
  • 允許遠(yuǎn)程用戶訪問(wèn)mysql服務(wù)sql語(yǔ)句

    允許遠(yuǎn)程用戶訪問(wèn)mysql服務(wù)sql語(yǔ)句

    本節(jié)主要介紹了如何允許遠(yuǎn)程用戶訪問(wèn)mysql服務(wù),本例授權(quán)192.168.14.1 主機(jī)的cakephp用戶訪問(wèn)cakephp數(shù)據(jù)庫(kù)
    2014-07-07

最新評(píng)論