MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Legen Sie den Zeichensatz und die Sortierung einer Tabelle in MariaDB fest

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.