国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL中utf8mb4排序規則示例

MySQL中utf8mb4排序規則示例

2021-09-03 21:38TeyGao Mysql

本文主要介紹了MySQL中utf8mb4排序規則,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在MySQL中常見的utf8mb4排序規則有:

  • utf8mb4_0900_ai_ci
  • utf8mb4_unicode_ci
  • utf8mb4_general_ci

當設置表的默認字符集為utf8mb4字符集但未明確指定排序規則時:

  • 在MySQL 5.7版本中,默認排序規則為utf8mb4_general_ci。
  • 在MySQL 8.0版本中,默認排序規則為utf8mb4_0900_ai_ci。

由于utf8mb4_0900_ai_ci排序規則時MySQL 8.0引入的排序規則,因此將MySQL 8.0版本的表導入到MySQL 5.7或MySQL 5.6版本時,會存在字符集無法識別的問題。

[Err] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'

參數控制

在MySQL 5.6版本中,參數collation_server用于設置服務器級別的默認排序規則。

  • 如果服務啟動時未指定參數collation_database的值,則默認繼承參數collation_server的值。
  • 如果創建數據庫時未指定排序規則,則默認使用參數collation_database的值。

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

  • 使用SHOW COLLATION and SHOW CHARACTER SET 命令時。
  • 在創建庫或修改庫指定utf8mb4但未指定編碼規則時。
  • 在創建表或修改表指定utf8mb4但未指定編碼規則時。
  • 在增加列或修改列指定utf8mb4但未指定編碼規則時。
  • 其他使用utf8mb4但未指定編碼規則時。

utf8mb4_unicode_ci和utf8mb4_general_ci對比

1、準確性

  • utf8mb4_unicode_ci排序規則基于標準unicode進行排序和比較,能處理特殊的字符,能在各種語音中精確排序。
  • utf8mb4_general_ci排序規則沒有基于標準unicode,無法處理部分特殊字符。

2、性能

  • utf8mb4_general_ci排序規則在排序性能上相對較好
  • utf8mb4_unicode_ci排序規則為處理特殊字符實現復雜的排序算法,性能略差
  • 在大部分場景下,兩者沒有明顯的性能差異

補:MySQL--utf8mb4與等值查詢測試

測試腳本

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
## 刪除測試表
DROP TABLE IF EXISTS tb2001;
DROP TABLE IF EXISTS tb2002;
DROP TABLE IF EXISTS tb2003;
 
## 創建測試表
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;
 
## 插入測試數據
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);
 
## 等值查詢測試
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;

測試結果

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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)

測試總結

  • 使用utf8mb4字符集能存儲特殊字符如表情符號。
  • utf8mb4_unicode_ci和utf8mb4_general_ci排序規則無法"正確匹配"特殊字符。
  • utf8mb4_0900_ai_ci排序規則能"正確匹配"特殊字符,但僅適用MySQL 8.0版本。
  • utf8mb4_bin排序規則基于二級制方式匹配特殊字符,能"正確匹配"特殊字符,適用于MySQL各個版本。

到此這篇關于MySQL中utf8mb4排序規則示例的文章就介紹到這了,更多相關MySQL utf8mb4排序內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/gaogao67/p/14722143.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲乱码国产乱码精品精的特点 | 久久精品亚洲精品 | av观看免费| 一级欧美 | 精品一区二区三区中文字幕 | 日韩在线免费视频 | 欧美亚洲自拍偷拍 | 亚洲视频在线观看免费 | 黄色一级视屏 | 日韩一区二区三区在线观看 | 日韩视频免费看 | 精品久久久一区 | 中文字幕av在线播放 | 99精品久久 | 午夜剧 | 亚洲精品一区二区三区99 | 亚洲视频在线播放 | 国产成人精品一区二 | 热久久国产 | 国产三级一区二区三区 | 国产精品一二三 | 中文字幕成人在线 | 91久久国产综合久久 | 国产精品久久精品 | 免费一区二区三区四区 | 在线观看黄 | 特级毛片在线大全免费播放 | 亚洲视频在线播放免费 | 黄色免费网 | 在线播放视频一区 | 狠狠干2024 | 91网站免费 | 免费av大全 | 校园春色av | 香蕉久久a毛片 | 精品国产一区二区 | 免费日韩精品 | 国产二区视频 | 欧美日韩国产一级片 | 日韩成人片 | 特黄一级 |