Sie können den Zeichensatz und die Sortierung auf verschiedenen Ebenen in MariaDB angeben. Sie können sie auf Verbindungsebene, Serverebene, Datenbankebene, Tabellenebene und sogar auf Spaltenebene angeben.
Sie können auch eine Sortierung in Ihren Abfragen angeben, sodass sie jede Sortierung überschreibt, die zuvor auf den oben genannten Ebenen angegeben wurde.
Um den Zeichensatz und die Sortierung auf Tabellenebene festzulegen, verwenden Sie CREATE TABLE
-Anweisung oder ALTER TABLE
-Anweisung (je nachdem, ob Sie die Tabelle erstellen oder ändern).
Beim Erstellen der Tabelle
Hier ist ein Beispiel für das Festlegen der Sortierung und des Zeichensatzes beim Erstellen der Tabelle:
CREATE TABLE Products (
ProductId CHAR(10),
ProductName VARCHAR(255) NOT NULL,
PRIMARY KEY (ProductId))
CHARACTER SET latin1
COLLATE latin1_general_ci;
Dadurch wird eine Tabelle namens Products
erstellt mit einem latin1
Zeichensatz und eine Sortierung von latin1_general_ci
.
Bestehende Tabelle ändern
Hier ist ein Beispiel für das Ändern der Sortierung und des Zeichensatzes in einer vorhandenen Tabelle:
ALTER TABLE Products
CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;
Es verwendet jetzt die neue Sortierung und den neuen Zeichensatz.
Es ist auch möglich, CONVERT TO
wegzulassen Teil:
ALTER TABLE Products
CHARACTER SET utf8
COLLATE utf8_spanish_ci;
Sortierung muss für den Zeichensatz gültig sein
Wenn Sie sowohl die Sortierung als auch den Zeichensatz festlegen, müssen Sie sicherstellen, dass die Sortierung für den gewählten Zeichensatz gültig ist und umgekehrt. Wenn nicht, wird ein Fehler zurückgegeben.
Hier ist ein Beispiel für die Angabe einer ungültigen Sortierung für den angegebenen Zeichensatz:
ALTER TABLE Products
CHARACTER SET latin1
COLLATE utf8_spanish_ci;
Ergebnis:
ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'
Es sagt uns, dass unsere gewählte Sortierung für unseren gewählten angegebenen Zeichensatz nicht gültig ist.
Siehe Vollständige Liste der von MariaDB unterstützten Sortierungen oder Vollständige Liste der von MariaDB unterstützten Zeichensätze für eine Liste übereinstimmender Sortierungen und Zeichensätze.
Nur die Sortierung oder den Zeichensatz angeben
Es ist in Ordnung, nur die Sortierung oder nur den Zeichensatz (oder keines von beidem) anzugeben:
- Wenn nur der Zeichensatz angegeben wird, wird die Standardsortierung für diesen Zeichensatz verwendet.
- Wenn nur die Sortierung angegeben wird, wird der zugehörige Zeichensatz verwendet.
- Wenn weder Sortierung noch Zeichensatz angegeben sind, wird der Tabellenstandard verwendet.
Konvertieren in einen Zeichensatz, der mehr Bytes erfordert
Für VARCHAR
oder TEXT
Spalten, CONVERT TO CHARACTER SET
ändert bei Bedarf den Datentyp, um sicherzustellen, dass die neue Spalte lang genug ist, um so viele Zeichen wie die ursprüngliche Spalte zu speichern.
Zum Beispiel ein ASCII TEXT
Spalte erfordert ein einzelnes Byte pro Zeichen, sodass die Spalte bis zu 65.535 Zeichen enthalten kann. Wenn die Spalte in utf8 konvertiert wird, können bis zu 3 Bytes für jedes Zeichen erforderlich sein, sodass die Spalte in MEDIUMTEXT
konvertiert wird (die eine maximale Länge von 16.777.215 hat), damit sie dieselbe Anzahl von Zeichen aufnehmen kann.
Wenn Sie nicht möchten, dass solche Datentypänderungen stattfinden, verwenden Sie MODIFY
stattdessen auf die einzelnen Spalten.
Zum Beispiel:
ALTER TABLE Products
MODIFY ProductName VARCHAR(255)
CHARACTER SET utf8;
In Binär umwandeln
CONVERT TO CHARACTER SET binary
konvertiert CHAR
, VARCHAR
und TEXT
Spalten in BINARY
, VARBINARY
und BLOB
bzw.
Danach haben solche Spalten keinen Zeichensatz mehr. Außerdem sind sie nicht mehr von zukünftigen CONVERT TO CHARACTER SET
betroffen Aussagen.
Überprüfen der Sortierung und Zeichensätze in MariaDB
Es gibt verschiedene Möglichkeiten, die Sortierung und Zeichensätze in MariaDB zu überprüfen, abhängig von der Ebene, die Sie überprüfen (Server, Datenbank, Tabelle, Spalte, Verbindung usw.). Beispiele finden Sie unter Sortierung in MariaDB anzeigen.