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

Drei Beispiele für Unschärfe-Hintergrundeffekte mit CSS3

Beginnen wir nicht mit der Einleitung, sondern ko...

So konfigurieren Sie die MySQL Master-Slave-Replikation unter Windows

Die MySQL Master-Slave-Replikation ermöglicht die...

JS implementiert die Append-Funktion von jQuery

Inhaltsverzeichnis Zeig mir den Code Testen Sie d...

5 Lösungen für den CSS-Box-Zusammenbruch

Zunächst: Was ist ein Box-Collapse? Elemente, die...

7 nützliche neue TypeScript-Funktionen

Inhaltsverzeichnis 1. Optionale Verkettung 2. Nul...

Implementierungscodebeispiel für die lokale Verzeichniszuordnung von Nginx

Manchmal müssen Sie auf einige statische Ressourc...

JavaScript implementiert kreisförmiges Karussell

In diesem Artikel wird der spezifische JavaScript...

Empfohlene 20 besten kostenlosen englischen Handschrift-Schriftarten

Jellyka BeesAntike Handschrift [Ank]* Jellyka Cutt...

So erstellen Sie einen Trigger in MySQL

In diesem Artikelbeispiel wird der spezifische Co...

Umfassendes Verständnis der HTML-Grundstruktur

Einführung in HTML HyperText-Auszeichnungssprache...