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

Legen Sie den Zeichensatz und die Sortierung einer Spalte 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 Spaltenebene 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 für eine Spalte beim Erstellen der Tabelle:

CREATE TABLE Events ( 
    EventId INT AUTO_INCREMENT NOT NULL, 
    EventName VARCHAR(255)
        CHARACTER SET utf8
        COLLATE utf8_spanish_ci, 
    PRIMARY KEY (EventId)
    );

Hier habe ich den Zeichensatz und die Sortierung auf Spaltenebene angegeben. Es ist auch möglich, sie auf Tabellenebene festzulegen.

Eine vorhandene Spalte ändern

Hier ist ein Beispiel für das Ändern der Sortierung und des Zeichensatzes in einer vorhandenen Spalte:

ALTER TABLE Events 
MODIFY EventName VARCHAR(255) 
CHARACTER SET latin5 COLLATE latin5_turkish_ci;

Der EventName Spalte verwendet jetzt die neue Sortierung und den neuen Zeichensatz.

Überprüfen Sie die Spalte

Es gibt mehrere Möglichkeiten, die Sortierung und den Zeichensatz einer Spalte zu überprüfen. Hier ist einer:

SELECT
    column_name, 
    character_set_name, 
    collation_name 
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';

Ergebnis:

+-------------+--------------------+-------------------+
| column_name | character_set_name | collation_name    |
+-------------+--------------------+-------------------+
| EventName   | latin5             | latin5_turkish_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 Events 
MODIFY EventName VARCHAR(255) 
CHARACTER SET utf16 COLLATE latin5_turkish_ci;

Ergebnis:

ERROR 1253 (42000): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf16'

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

Es ist auch möglich, den Zeichensatz auf Tabellenebene zu konvertieren. Beim Konvertieren des Zeichensatzes auf Tabellenebene besteht die Möglichkeit, dass MariaDB den Datentyp automatisch in einen konvertiert, der den neuen Zeichensatz besser verarbeiten kann.

Wenn wir jedoch MODIFY verwenden auf die einzelnen Spalten und geben den Datentyp explizit an (wie wir es in den vorherigen Beispielen getan haben), verhindern wir, dass MariaDB den Datentyp konvertiert.

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.