Beispiel für utf8mb4-Sortierung in MySQL

Beispiel für utf8mb4-Sortierung in MySQL

Allgemeine utf8mb4-Sortierregeln in MySQL sind:

  • utf8mb4_0900_ai_ci
  • utf8mb4_unicode_ci
  • utf8mb4_general_ci

Wenn der Standardzeichensatz einer Tabelle auf utf8mb4 eingestellt ist, die Sortierung jedoch nicht explizit angegeben ist:

  • In MySQL Version 5.7 ist die Standardsortierung utf8mb4_general_ci.
  • In MySQL Version 8.0 ist die Standardsortierung utf8mb4_0900_ai_ci.

Da die Sortierung utf8mb4_0900_ai_ci die in MySQL 8.0 eingeführte Sortierung ist, wird der Zeichensatz möglicherweise nicht erkannt, wenn Sie eine MySQL 8.0-Tabelle in MySQL 5.7 oder MySQL 5.6 importieren.

[Err] 1273 - Unbekannte Sortierung: „utf8mb4_0900_ai_ci“

Parametersteuerung

In MySQL Version 5.6 wird der Parameter collation_server verwendet, um die Standardsortierung auf Serverebene festzulegen.

  • Wenn der Wert des Parameters collation_database beim Starten des Dienstes nicht angegeben ist, wird standardmäßig der Wert des Parameters collation_server übernommen.
  • Wenn beim Erstellen einer Datenbank keine Sortierung angegeben wird, wird standardmäßig der Wert des Parameters collation_database verwendet.

Die Parameter character_set_database und collation_database sind in MySQL 5.7 veraltet und werden in einer nachfolgenden Version entfernt.
MySQL fügt einen neuen Parameter default_collation_for_utf8mb4 hinzu, um die Standardsortierung bei Verwendung des utf8mb4-Zeichensatzes zu steuern. Der Wert ist utf8mb4_0900_ai_ci oder utf8mb4_general_ci
Der Parameter default_collation_for_utf8mb4 wird unter den folgenden Bedingungen wirksam:

  • Bei Verwendung der Befehle SHOW COLLATION und SHOW CHARACTER SET.
  • Geben Sie beim Erstellen oder Ändern einer Bibliothek utf8mb4 an, aber nicht die Kodierungsregel.
  • Wenn Sie eine Tabelle erstellen oder ändern, geben Sie utf8mb4 an, aber keine Kodierungsregel.
  • Geben Sie beim Hinzufügen oder Ändern einer Spalte utf8mb4 an, aber nicht die Kodierungsregel.
  • Andere verwenden utf8mb4, geben aber keine Kodierungsregel an.

Vergleich zwischen utf8mb4_unicode_ci und utf8mb4_general_ci

1. Richtigkeit

  • Die Sortierregel utf8mb4_unicode_ci basiert auf standardmäßiger Unicode-Sortierung und -Vergleich, kann Sonderzeichen verarbeiten und ermöglicht eine genaue Sortierung in verschiedenen Sprachen.
  • Die Sortierregel utf8mb4_general_ci basiert nicht auf Standard-Unicode und kann einige Sonderzeichen nicht verarbeiten.

2. Leistung

  • Die Sortierung utf8mb4_general_ci ist relativ gut in der Sortierleistung
  • Die Sortierregel utf8mb4_unicode_ci implementiert einen komplexen Sortieralgorithmus zur Verarbeitung von Sonderzeichen und ihre Leistung ist etwas schlechter.
  • In den meisten Szenarien gibt es keinen signifikanten Leistungsunterschied zwischen den beiden.

Ergänzung: MySQL - utf8mb4 und gleichwertiger Abfragetest

Testskripte

## Löschen Sie die Testtabelle DROP TABLE IF EXISTS tb2001;
Tabelle löschen, wenn tb2002 vorhanden ist;
Tabelle löschen, wenn tb2003 vorhanden ist;

## Erstellen Sie eine Testtabelle CREATE TABLE tb2001(
ID INT AUTO_INCREMENT PRIMARY KEY,
c1 VARCHAR(100) COLLATE utf8mb4_unicode_ci,
c2 VARCHAR(100) COLLATE utf8mb4_bin
)ENGINE=INNODB STANDARD-CHARSET=utf8mb4;

Tabelle erstellen tb2002(
ID INT AUTO_INCREMENT PRIMARY KEY,
c1 VARCHAR (100) COLLATE utf8mb4_general_ci,
c2 VARCHAR(100) COLLATE utf8mb4_bin
)ENGINE=INNODB STANDARD-CHARSET=utf8mb4;

Tabelle erstellen tb2003(
ID INT AUTO_INCREMENT PRIMARY KEY,
c1 VARCHAR (100) COLLATE utf8mb4_0900_ai_ci,
c2 VARCHAR(100) COLLATE utf8mb4_bin
)ENGINE=INNODB STANDARD-CHARSET=utf8mb4;

## Testdaten einfügen INSERT INTO tb2001(c1,c2) ​​​​VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);
INSERT INTO tb2002(c1,c2)VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);
EINFÜGEN IN tb2003(c1,c2)VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);

## Äquivalenzabfragetest SELECT * FROM tb2001 WHERE c1=0xF09F8D83;
Wählen Sie * aus tb2002, wobei c1 = 0xF09F8D83;
Wählen Sie * aus tb2003, wobei c1 = 0xF09F8D83;

Wählen Sie * aus tb2001, wobei c2 = 0xF09F8D83;
Wählen Sie * aus tb2002, wobei c2 = 0xF09F8D83;
Wählen Sie * aus tb2003, wobei c2 = 0xF09F8D83;

Testergebnisse

mysql> AUSWÄHLEN * VON tb2001 WO c1=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
| 2 | 🦊 | 🦊 |
| 3 | 🌠 | 🌠 |
+----+------+------+
3 Zeilen im Satz (0,00 Sek.)

mysql> AUSWÄHLEN * VON tb2002 WO c1=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
| 2 | 🦊 | 🦊 |
| 3 | 🌠 | 🌠 |
+----+------+------+
3 Zeilen im Satz (0,01 Sek.)

mysql> AUSWÄHLEN * VON tb2003 WO c1=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
+----+------+------+
1 Zeile im Satz (0,00 Sek.)

MySQL> 
mysql> AUSWÄHLEN * VON tb2001 WO c2=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
+----+------+------+
1 Zeile im Satz (0,00 Sek.)

mysql> AUSWÄHLEN * VON tb2002 WO c2=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
+----+------+------+
1 Zeile im Satz (0,00 Sek.)

mysql> AUSWÄHLEN * VON tb2003 WO c2=0xF09F8D83;
+----+------+------+
| Ich würde | c1 | c2 |
+----+------+------+
| 1 | 🍃 | 🍃 |
+----+------+------+
1 Zeile im Satz (0,00 Sek.)

Testzusammenfassung

  • Durch die Verwendung des UTF8MB4-Zeichensatzes können Sonderzeichen wie Emoticons gespeichert werden.
  • Die Sortierungen utf8mb4_unicode_ci und utf8mb4_general_ci führen keine „korrekte Zuordnung“ zu Sonderzeichen durch.
  • Die Sortierung utf8mb4_0900_ai_ci kann Sonderzeichen „korrekt zuordnen“, ist aber nur auf MySQL Version 8.0 anwendbar.
  • Die Sortierregel utf8mb4_bin gleicht Sonderzeichen basierend auf einem Binärsystem ab, kann Sonderzeichen „korrekt abgleichen“ und ist auf alle Versionen von MySQL anwendbar.

Dies ist das Ende dieses Artikels über utf8mb4-Sortierregeln in MySQL. Weitere Informationen zur MySQL utf8mb4-Sortierung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Schritte zum Ändern des MySQL-Zeichensatzes auf UTF8 unter Linux
  • MySQL-Kodierung utf8 und utf8mb4 utf8mb4_unicode_ci und utf8mb4_general_ci
  • So ändern Sie die Kodierung der MySQL-Datenbank in utf8mb4
  • mysql charset=utf8 verstehen Sie wirklich, was es bedeutet
  • So ändern Sie den MySQL-Zeichensatz utf8 in utf8mb4
  • mysql verstümmelte Zeichen Latin1-Zeichen in UTF8-Details konvertiert

<<:  Der neueste Linux-Installationsprozess von Tomcat8

>>:  So ändern Sie die Standardübermittlungsmethode des Formulars

Artikel empfehlen

Änderung und Abfrage von Python MySQL-Datenbanktabellen

Python stellt eine Verbindung zu MySQL her, um Da...

Installieren Sie Windows Server 2019 auf VMware Workstation (Grafisches Tutorial)

Wenn Sie aufgefordert werden, einen Schlüssel ein...

Informationen zur Layoutmethode für Inhaltsüberlauf in Tabellen

Was ist Inhaltsüberlauf? Wenn tatsächlich viel Te...

Beispiel für die Verwendung der in Vue integrierten Komponente „Keep-Alive“

Inhaltsverzeichnis 1. Verwendung von Keep-Alive A...

So löschen Sie verstümmelte oder mit Sonderzeichen versehene Dateien in Linux

Aus Kodierungsgründen werden beim Hochladen oder ...

React-Internationalisierung – Verwendung von react-intl

Wie erreicht man Internationalisierung in React? ...

Verwendung von „align-content“ im Zeilenumbruchbereich des Flex-Layouts

1. Das in diesem Artikel implementierte Effektdia...

Vue-Routing zum Implementieren der Login-Abfangung

Inhaltsverzeichnis 1. Übersicht 2. Routing Naviga...

Eine Lösung für einen Fehler in IE6 mit jquery-multiselect

Bei der Verwendung von jquery-multiselect (einem ...