1Mehrere gängige Zeichensätze Zu den gängigsten Zeichensätzen in MySQL gehören der ASCII-Zeichensatz, der lateinische Zeichensatz, der GB2312-Zeichensatz, der GBK-Zeichensatz, der UTF8-Zeichensatz usw. Lassen Sie uns diese Zeichensätze kurz vorstellen: ASCII-Zeichensatz Dieser Zeichensatz verwendet 1 Byte zur Kodierung. Ein Byte hat 8 Bit und kann insgesamt 128 Zeichen speichern. Die spezifische Entsprechung ist wie folgt: Lateinischer Zeichensatz Der lateinische Zeichensatz kann insgesamt 256 Zeichen speichern. Verglichen mit dem ASCII-Code enthält er 128 in Westeuropa häufig verwendete Zeichen. GB2312-Zeichensatz Es umfasst chinesische Schriftzeichen, lateinische Schriftzeichen, griechische Schriftzeichen usw., wobei die chinesischen Schriftzeichen (6.763) den größten Anteil haben und es 638 weitere Textsymbole gibt. Außerdem ist es mit ASCII-Zeichen kompatibel. Bei der ASCII-Kodierung wird 1 Byte (also 128 Bit) verwendet, bei der Kodierung anderer Zeichen werden 2 Byte verwendet. Es ist klar, dass es sich um eine Methode zur Seitenlängenkodierung handelt. GBK-Zeichensatz Dieser Zeichensatz stellt eine Erweiterung des GB2312-Zeichensatzes dar. Er ist mit dem GB2312-Zeichensatz kompatibel und wird grundsätzlich mit zwei Bytes kodiert. UTF8-Zeichensatz Es wird normalerweise mit 1 bis 4 Bytes codiert. Je nach den verwendeten Bytes kann es auch in UTF8 und utf8mb4 unterteilt werden. mb4 bedeutet bis zu 4 Bytes. Im Allgemeinen verwendet UTF8 drei Bytes zur Codierung. Darüber hinaus gibt es utf16 und utf32. Utf16 verwendet 2 oder 4 Bytes zur Codierung eines Zeichens und utf32 verwendet 4 Bytes zur Codierung eines Zeichens. Es ist zu beachten, dass einige Emoji-Ausdrücke mit utf8mb4 dargestellt werden müssen. 2 In MySQL unterstützte Zeichensätze MySQL unterstützt viele Zeichensätze. Am Beispiel meines lokalen Zeichensatzes verwende ich den Befehl show charset, um die vom aktuellen Server unterstützten Zeichensätze anzuzeigen. Die Ergebnisse sind wie folgt: [email protected]:(keine) 22:46:48>>Zeichensatz anzeigen; +----------+-----------------+---------------------+---------+ | Zeichensatz | Beschreibung | Standardsortierung | Maxlen | +----------+-----------------+---------------------+---------+ | big5 | Big5 Traditionelles Chinesisch | big5_chinese_ci | 2 | | dec8 | DEZ Westeuropäisch | dec8_swedish_ci | 1 | | cp850 | DOS Westeuropäisch | cp850_general_ci | 1 | | hp8 | HP Westeuropäisch | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russisch | koi8r_general_ci | 1 | | latin1 | cp1252 Westeuropäisch | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Mitteleuropäisch | latin2_general_ci | 1 | | swe7 | 7-Bit Schwedisch | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanisch | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanisch | sjis_japanese_ci | 2 | | Hebräisch | ISO 8859-8 Hebräisch | hebrew_general_ci | 1 | | tis620 | TIS620 Thailändisch | tis620_thai_ci | 1 | | euckr | EUC-KR Koreanisch | euckr_korean_ci | 2 | | koi8u | KOI8-U Ukrainisch | koi8u_general_ci | 1 | | gb2312 | GB2312 Vereinfachtes Chinesisch | gb2312_chinese_ci | 2 | | Griechisch | ISO 8859-7 Griechisch | greek_general_ci | 1 | | cp1250 | Windows Mitteleuropäisch | cp1250_general_ci | 1 | | gbk | GBK vereinfachtes Chinesisch | gbk_chinese_ci | 2 | | latin5 | ISO 8859-9 Türkisch | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenisch | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp866 | DOS Russisch | cp866_general_ci | 1 | | keybcs2 | DOS Kamenicky Tschechisch-Slowakisch | keybcs2_general_ci | 1 | | macce | Mac Mitteleuropäisch | macce_general_ci | 1 | | macroman | Mac Westeuropäisch | macroman_general_ci | 1 | | cp852 | DOS Mitteleuropäisch | cp852_general_ci | 1 | | latin7 | ISO 8859-13 Baltikum | latin7_general_ci | 1 | | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | | cp1251 | Windows-Kyrillisch | cp1251_general_ci | 1 | | utf16 | UTF-16 Unicode | utf16_general_ci | 4 | | cp1256 | Windows-Arabisch | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | utf32 | UTF-32 Unicode | utf32_general_ci | 4 | | binär | Binärer Pseudozeichensatz | binär | 1 | | geostd8 | GEOSTD8 Georgisch | geostd8_general_ci | 1 | | cp932 | SJIS für Windows Japanisch | cp932_japanese_ci | 2 | | eucjpms | UJIS für Windows Japanisch | eucjpms_japanese_ci | 3 | +----------+-----------------+---------------------+---------+ 39 Zeilen im Satz (0,00 Sek.) Wie Sie sehen, werden insgesamt 39 Zeichensätze unterstützt. Natürlich variiert diese Zahl in verschiedenen Versionen. Von diesen 39 Zeichensätzen müssen wir uns vor allem die folgenden merken: +----------+-----------------+---------------------+---------+ | Zeichensatz | Beschreibung | Standardsortierung | Maxlen | +----------+-----------------+---------------------+---------+ | latin1 | cp1252 Westeuropäisch | latin1_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | gb2312 | GB2312 Vereinfachtes Chinesisch | gb2312_chinese_ci | 2 | | gbk | GBK vereinfachtes Chinesisch | gbk_chinese_ci | 2 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | +----------+-----------------+---------------------+---------+ Hierfür müssen wir lediglich wissen, wie viele Bytes ihre maximale Länge umfasst. 3 Verifizierungsregeln Die Validierungsregel eines Zeichensatzes bezieht sich auf das Kriterium, das beim Vergleichen der Größe eines Zeichensatzes verwendet wird. Wenn wir beispielsweise die Größe von a und B vergleichen und die Groß-/Kleinschreibung nicht berücksichtigen, dann gilt a<B. Wenn wir die Groß-/Kleinschreibung berücksichtigen, dann gilt a>B. Mit anderen Worten: Derselbe Zeichensatz, aber unterschiedliche Vergleichsregeln führen zu unterschiedlichen Sortierergebnissen für eine Datenspalte. Die Zeichenvalidierungsregeln in MySQL können mit der Syntax „show collation;“ wie folgt angezeigt werden: [email protected]:(keine) 23:00:36>>Sortierung anzeigen; +-----------------------+----------+-----+---------+----------+----------+---------+ | Sortierung | Zeichensatz | ID | Standard | Kompiliert | Sortlen | +-----------------------+----------+-----+---------+----------+----------+---------+ | big5_chinese_ci | big5 | 1 | Ja | Ja | 1 | | big5_bin | big5 | 84 | | Ja | 1 | | dec8_swedish_ci | dec8 | 3 | Ja | Ja | 1 | | dec8_bin | dec8 | 69 | | Ja | 1 | ........... | koi8r_general_ci | koi8r | 7 | Ja | Ja | 1 | | koi8r_bin | koi8r | 74 | | Ja | 1 | | latin1_german1_ci | latin1 | 5 | | Ja | 1 | | koi8u_general_ci | koi8u | 22 | Ja | Ja | 1 | | utf8_general_ci | utf8 | 33 | Ja | Ja | 1 | | utf8_bin | utf8 | 83 | | Ja | 1 | | utf8_unicode_ci | utf8 | 192 | | Ja | 8 | | utf8_icelandic_ci | utf8 | 193 | | Ja | 8 | | utf8_latvian_ci | utf8 | 194 | | Ja | 8 | | utf8_romanian_ci | utf8 | 195 | | Ja | 8 | | utf8_slovenian_ci | utf8 | 196 | | Ja | 8 | | utf8_polish_ci | utf8 | 197 | | Ja | 8 | | utf8_estonian_ci | utf8 | 198 | | Ja | 8 | +-----------------------+----------+-----+---------+----------+----------+---------+ 195 Zeilen im Satz (0,00 Sek.) Wir können sehen, dass die Ergebnisse insgesamt 195 Vergleichsregeln enthalten. Jeder Zeichensatz enthält seine eigene Standardvalidierungsregel. Lassen Sie uns eine davon kurz erklären: utf8_polish_ci vergleicht auf der Grundlage von Polnisch. Diese Validierungsregel besteht aus drei Teilen. Der Name der Vergleichsregel beginnt mit dem Namen des damit verbundenen Zeichensatzes. utf8 bezieht sich auf die Vergleichsregel des utf8-Zeichensatzes, polish bezieht sich auf Polnisch und _ci bezieht sich auf die Groß-/Kleinschreibung. Für das letzte Suffix können wir wie folgt zusammenfassen: _ai ist akzentunabhängig _as ist akzentsensitiv _ci case insensitive (insensitive) nicht case-sensitiv _cs Groß-/Kleinschreibung beachten (sensitiv) Groß-/Kleinschreibung beachten _bin binär In den obigen Ergebnissen können wir auch sehen, dass der Wert der Standardspalte einiger Validierungsregeln „Ja“ lautet, was bedeutet, dass diese Validierungsregel die Standardvalidierungsregel für den Zeichensatz ist. 4 Zeichensätze und Vergleichsregeln auf dem Server MySQL bietet zwei Systemvariablen zur Darstellung des Zeichensatzes und der Vergleichsregeln auf Serverebene, eine ist character_set_sever und die andere ist collation_server. Wir können ihre Standardwerte anzeigen: [email protected]:(keine) 23:12:28>>Variablen wie „character_set_server“ anzeigen; +----------------------+----------+ | Variablenname | Wert | +----------------------+----------+ | Zeichensatzserver | utf8 | +----------------------+----------+ 1 Zeile im Satz (0,00 Sek.) [email protected]:(keine) 23:12:47>>Variablen wie „collation_server“ anzeigen; +------------------+-----------------+ | Variablenname | Wert | +------------------+-----------------+ | Sortierserver | utf8_general_ci | +------------------+-----------------+ 1 Zeile im Satz (0,00 Sek.) [email protected]:(keine) 23:12:57>> In MySQL sind Zeichensätze und Validierungsregeln in vier Ebenen unterteilt: Serverebene, Datenbankebene, Tabellenebene und Feldebene. Hier sehen wir sie anhand von Beispielen: Datenbankebenemysql 23:23:48>>Datenbank erstellen yyz Zeichensatz UTF8 sortieren utf8_general_ci; Abfrage OK, 1 Zeile betroffen (0,01 Sek.) Tabellenebene MySQL 23:24:23>>Tabelle yyz.yyz erstellen (Name varchar (10)) Zeichensatz gb2312 sortieren gb2312_chinese_ci; Abfrage OK, 0 Zeilen betroffen (0,04 Sek.) Feldebenemysql 23:27:06>> [email protected]:(keine) 23:27:06>>Tabelle yyz.yyz ändern, Num varchar(10) hinzufügen, Zeichensatz gbk, gbk_chinese_ci sortieren; Abfrage OK, 0 Zeilen betroffen (0,11 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 Zeigen Sie die Ergebnisse anmysql 23:28:27>>show create table yyz.yyz; +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Tabelle | Tabelle erstellen | +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | yyz | TABELLE ERSTELLEN `yyz` ( `name` varchar(10) DEFAULT NULL, `num` varchar(10) ZEICHENSATZ gbk STANDARD NULL ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 | +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 Zeile im Satz (0,00 Sek.) Da der Zeichensatz und die Vergleichsregeln miteinander in Beziehung stehen, ändern sich die Vergleichsregeln, wenn wir nur den Zeichensatz ändern. Wenn wir nur die Vergleichsregeln ändern, ändert sich auch der Zeichensatz. Die spezifischen Regeln lauten wie folgt: Wenn Sie nur den Zeichensatz ändern, werden die Vergleichsregeln zu den Standardvergleichsregeln des geänderten Zeichensatzes. Es gibt noch 4 weitere Dinge, die Sie beachten sollten:
Oben finden Sie eine ausführliche Erläuterung des Zeichensatzes und der Validierungsregeln in MySQL. Weitere Informationen zum Zeichensatz und den Validierungsregeln in MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
Inhaltsverzeichnis Zeig mir den Code Testen Sie d...
Im Linux-System gibt es einen Dateityp namens Lin...
Als ich kürzlich an CSS-Schnittstellen arbeitete,...
Die Datensicherung ist ganz einfach. Führen Sie d...
Cockpit ist ein webbasiertes Serververwaltungstoo...
Inhaltsverzeichnis SQL verstehen SELECT verstehen...
So legen Sie die Position des Blockelements in de...
Keepalived+Nginx+Tomcat zur Erzielung eines hochv...
Inhaltsverzeichnis Konfiguration hinzufügen JSON-...
MySQL-Benutzer und -Berechtigungen In MySQL gibt ...
Grund: MySQL 5.7.5 und höher implementiert die Er...
Führen Sie zunächst eine einfache Docker-Installa...
Schauen Sie sich zunächst das offizielle Tutorial...
Leider trat der Fehler MYSQL_DATA_TRUNCATED währe...
js-Ausführung Phase der lexikalischen Analyse: um...