In diesem Hinweis wird hauptsächlich das Erlernen von Kenntnissen zum MySQL-Zeichensatz beschrieben. ZeichensatzIm Allgemeinen verwenden wir die folgende Anweisung, um eine Tabelle zu erstellen, und geben beim Erstellen der Tabelle den Zeichensatz als UTF-8-Kodierung an. CREATE TABLE `test` ( `c1` int UNSIGNED NOT NULL AUTO_INCREMENT, `c2` varchar(255), `c3` Zeichen(11), `c4` varchar(255), PRIMÄRSCHLÜSSEL (`c1`) )ENGINE=InnoDB STANDARD-CHARSET=utf8; Tatsächlich unterstützt MySQL aber auch andere Zeichensätze als UTF8. Mit dem Befehl „show charset“ können Sie alle derzeit von MySQL unterstützten Zeichensätze anzeigen. Die folgende Abbildung zeigt beispielsweise alle von meinem MySQL unterstützten Zeichensätze. Wie aus der obigen Abbildung ersichtlich, gibt die vierte Spalte die maximale Länge des Zeichensatzes an. Die maximale Länge von UTF-8, das wir häufig beim Erstellen von Tabellen verwenden, beträgt in MySQL tatsächlich 3 Zeichen. Es wird allgemein angenommen, dass utf8 1 bis 4 Zeichen verwendet, um bestimmte Inhalte darzustellen, aber utf8 in MySQL ist eigentlich ein Alias für utf8mb3. Das authentische, das in MySQL bis zu 4 Zeichen verwendet, ist utf8mb4. Beachten: utf8mb4 utf8mb4 VergleichsregelnIn der obigen Abbildung ist die dritte Spalte „Standardsortierung“ die Standardvergleichsregel dieser Zeichensätze. Beispielsweise ist die Standardvergleichsregel für den ACSII-Zeichensatz „ascii_general_ci“ und die Standardvergleichsregel für den UTF8-Zeichensatz „utf8_general_ci“. Tatsächlich hat jeder Zeichensatz viele Vergleichsregeln. Schauen wir uns beispielsweise die Vergleichsregeln des acsii-Zeichensatzes an, wie in der folgenden Abbildung dargestellt mysql> Sortierung wie „ascii%“ anzeigen; +------------------+---------+----+---------+----------+---------+ | Sortierung | Zeichensatz | ID | Standard | Kompiliert | Sortlen | +------------------+---------+----+---------+----------+---------+ | ascii_general_ci | ascii | 11 | Ja | | 0 | | ascii_bin | ascii | 65 | | | 0 | +------------------+---------+----+---------+----------+---------+ ascii_general_ci gibt einen allgemeinen Vergleich an, wobei _ci bedeutet, dass die Groß-/Kleinschreibung nicht beachtet wird. (Im Gegenteil, _cs bedeutet Groß-/Kleinschreibung beachten) ascii_bin bedeutet binärer Vergleich Schauen wir uns die Vergleichsregeln der Zeichensätze utf8 und utf8mb4 an, wie in der folgenden Abbildung dargestellt mysql> Sortierung wie „utf8%“ anzeigen; +--------------------------+---------+-----+---------+----------+----------+---------+ | Sortierung | Zeichensatz | ID | Standard | Kompiliert | Sortlen | +--------------------------+---------+-----+---------+----------+----------+---------+ | 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 | | utf8_spanish_ci | utf8 | 199 | | Ja | 8 | | utf8_swedish_ci | utf8 | 200 | | Ja | 8 | | utf8_turkish_ci | utf8 | 201 | | Ja | 8 | | utf8_czech_ci | utf8 | 202 | | Ja | 8 | | utf8_danish_ci | utf8 | 203 | | Ja | 8 | | utf8_lituanian_ci | utf8 | 204 | | Ja | 8 | | utf8_slovak_ci | utf8 | 205 | | Ja | 8 | | utf8_spanish2_ci | utf8 | 206 | | Ja | 8 | | utf8_roman_ci | utf8 | 207 | | Ja | 8 | | utf8_persian_ci | utf8 | 208 | | Ja | 8 | | utf8_esperanto_ci | utf8 | 209 | | Ja | 8 | | utf8_hungarian_ci | utf8 | 210 | | Ja | 8 | | utf8_sinhala_ci | utf8 | 211 | | Ja | 8 | | utf8_german2_ci | utf8 | 212 | | Ja | 8 | | utf8_croatian_ci | utf8 | 213 | | Ja | 8 | | utf8_unicode_520_ci | utf8 | 214 | | Ja | 8 | | utf8_vietnamese_ci | utf8 | 215 | | Ja | 8 | | utf8_general_mysql500_ci | utf8 | 223 | | Ja | 1 | | utf8mb4_general_ci | utf8mb4 | 45 | Ja | Ja | 1 | | utf8mb4_bin | utf8mb4 | 46 | | Ja | 1 | | utf8mb4_unicode_ci | utf8mb4 | 224 | | Ja | 8 | | utf8mb4_icelandic_ci | utf8mb4 | 225 | | Ja | 8 | | utf8mb4_latvian_ci | utf8mb4 | 226 | | Ja | 8 | | utf8mb4_romanian_ci | utf8mb4 | 227 | | Ja | 8 | | utf8mb4_slovenian_ci | utf8mb4 | 228 | | Ja | 8 | | utf8mb4_polish_ci | utf8mb4 | 229 | | Ja | 8 | | utf8mb4_estonian_ci | utf8mb4 | 230 | | Ja | 8 | | utf8mb4_spanish_ci | utf8mb4 | 231 | | Ja | 8 | | utf8mb4_swedish_ci | utf8mb4 | 232 | | Ja | 8 | | utf8mb4_turkish_ci | utf8mb4 | 233 | | Ja | 8 | | utf8mb4_czech_ci | utf8mb4 | 234 | | Ja | 8 | | utf8mb4_danish_ci | utf8mb4 | 235 | | Ja | 8 | | utf8mb4_lituanian_ci | utf8mb4 | 236 | | Ja | 8 | | utf8mb4_slovak_ci | utf8mb4 | 237 | | Ja | 8 | | utf8mb4_spanish2_ci | utf8mb4 | 238 | | Ja | 8 | | utf8mb4_roman_ci | utf8mb4 | 239 | | Ja | 8 | | utf8mb4_persian_ci | utf8mb4 | 240 | | Ja | 8 | | utf8mb4_esperanto_ci | utf8mb4 | 241 | | Ja | 8 | | utf8mb4_hungarian_ci | utf8mb4 | 242 | | Ja | 8 | | utf8mb4_sinhala_ci | utf8mb4 | 243 | | Ja | 8 | | utf8mb4_german2_ci | utf8mb4 | 244 | | Ja | 8 | | utf8mb4_croatian_ci | utf8mb4 | 245 | | Ja | 8 | | utf8mb4_unicode_520_ci | utf8mb4 | 246 | | Ja | 8 | | utf8mb4_vietnamese_ci | utf8mb4 | 247 | | Ja | 8 | +--------------------------+---------+-----+---------+----------+----------+---------+ Die Verwendung unterschiedlicher Vergleichsregeln zum Vergleichen von Daten kann zu unterschiedlichen Ergebnissen führen. Der Zeichensatz und die Vergleichsregeln entsprechen einander. Egal, ob Sie nur den Zeichensatz oder nur die Vergleichsregeln ändern, das andere ändert sich automatisch entsprechend. Vier Ebenen von Zeichensätzen und VergleichsregelnDer Zeichensatz und die Vergleichsregeln wurden oben erwähnt. Tatsächlich gibt es in MySQL verschiedene Ebenen von Zeichensätzen und Vergleichsregeln:
Informationen zu Zeichensätzen auf Serverebene finden Sie im Parameter character_set_server und Vergleichsregeln auf Serverebene im Parameter collation_server. mysql> Variablen wie „character_set_server“ anzeigen; +----------------------+----------+ | Variablenname | Wert | +----------------------+----------+ | Zeichensatzserver | utf8 | +----------------------+----------+ 1 Zeile im Satz (0,00 Sek.) mysql> Variablen wie „collation_server“ anzeigen; +------------------+-----------------+ | Variablenname | Wert | +------------------+-----------------+ | Sortierserver | utf8_general_ci | +------------------+-----------------+ 1 Zeile im Satz (0,00 Sek.) Wenn Sie den Zeichensatz und die Vergleichsregeln auf Datenbankebene anzeigen möchten, können Sie zunächst mit xxxdb zu einer bestimmten Datenbank wechseln und dann Show-Variablen wie „character_set_database“ und Show-Variablen wie „collation_database“ ausführen, um den Zeichensatz und die Vergleichsregeln der Datenbank anzuzeigen. Datenbank geändert mysql> Variablen wie „character_set_database“ anzeigen; +------------------------+----------+ | Variablenname | Wert | +------------------------+----------+ | Zeichensatzdatenbank | utf8 | +------------------------+----------+ 1 Zeile im Satz (0,00 Sek.) mysql> Variablen wie „collation_database“ anzeigen; +--------------------+-----------------+ | Variablenname | Wert | +--------------------+-----------------+ | Sortierdatenbank | utf8_general_ci | +--------------------+-----------------+ 1 Zeile im Satz (0,00 Sek.) Wenn Sie den Zeichensatz und die Vergleichsregeln einer Tabelle oder einer Spalte in einer Tabelle anzeigen möchten, können Sie mit „show create table xxxtb“ die spezifische Anweisung zur Tabellenerstellung anzeigen, die den verwendeten Zeichensatz und die Vergleichsregeln enthält. Wenn beim Erstellen der Datenbank der Zeichensatz und die Vergleichsregeln nicht angegeben werden, werden der Zeichensatz und die Vergleichsregeln auf Serverebene als Zeichensatz und Vergleichsregeln der Datenbank verwendet. Wenn in der Anweisung zum Erstellen oder Ändern einer Tabelle kein Zeichensatz und keine Vergleichsregeln angegeben werden, werden als Zeichensatz und Vergleichsregeln der Tabelle der Zeichensatz und die Vergleichsregeln der Datenbank verwendet, in der sich die Tabelle befindet. Drei SystemvariablenDer MySQL-Server kann mehreren Clients entsprechen, und die Codierungsmethoden dieser Clients können unterschiedlich sein, aber der Zeichensatz der Daten in der Datenbank ist sicher. MySQL muss für verschiedene Clients eine Codierungskonvertierungsverarbeitung durchführen und dann die Ergebnisse an den Client zurückgeben. In MySQL gibt es drei Systemvariablen auf SESSION-Ebene, die die oben genannten Vorgänge ausführen können:
Der MySQL-Server verwaltet für jeden Client eine Kopie dieser drei Variablen auf Sitzungsebene. Um Probleme in tatsächlichen Produktionsumgebungen zu vermeiden, haben Unternehmen jedoch im Allgemeinen Vorschriften, die von Clients verlangen, standardmäßig den UTF-8-Zeichensatz zu verwenden. Oben finden Sie eine detaillierte Zusammenfassung des MySQL-Zeichensatzes. Weitere Informationen zum MySQL-Zeichensatz finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Beispielcode zum Implementieren eines gleichhohen Layouts auf mehrere Arten mit CSS
>>: Lösung für den Fehler beim Aufrufen des Containers aufgrund vollen Docker-Speicherplatzes
Docker-Version: [root@localhost gae_proxy]# Docke...
In diesem Artikel wird der spezifische Code von j...
Warum? Am einfachsten lässt es sich so ausdrücken:...
Was bedeutet Textfüllfarbe? Rein wörtlich bedeute...
Darüber hinaus wird eine mit einem Blog-Programm e...
MySQL führt SQL durch den Prozess der SQL-Analyse...
Hinweis: Dieser Artikel wurde von jemand anderem ü...
Inhaltsverzeichnis Vorwort Fall Optimierung Zusam...
Inhaltsverzeichnis Vorteil 1: Optimierung des Dif...
Inhaltsverzeichnis 1. Nachfrage 2. Datenbankdesig...
In diesem Artikel wird der spezifische Code von J...
Bei der Erstellung von Webseiten werden Eingabe un...
My97DatePicker ist ein sehr flexibles und benutze...
1. Was ist eine Transaktion? Eine Datenbanktransa...
<br />Im ersten Abschnitt dieser Reihe haben...