Du kan specificera teckenuppsättningen och sorteringen på olika nivåer i MariaDB. Du kan ange dem på anslutningsnivå, servernivå, databasnivå, tabellnivå och till och med kolumnnivå.
Du kan också ange en sortering i dina frågor så att den åsidosätter all sortering som tidigare har specificerats på ovannämnda nivåer.
För att ställa in teckenuppsättningen och sorteringen på kolumnnivå, använd CREATE TABLE
uttalande eller ALTER TABLE
uttalande (beroende på om du skapar tabellen eller ändrar den).
När du skapar tabellen
Här är ett exempel på hur du ställer in sorteringen och teckenuppsättningen i en kolumn när du skapar tabellen:
CREATE TABLE Events (
EventId INT AUTO_INCREMENT NOT NULL,
EventName VARCHAR(255)
CHARACTER SET utf8
COLLATE utf8_spanish_ci,
PRIMARY KEY (EventId)
);
Här specificerade jag teckenuppsättningen och sorteringen på kolumnnivå. Det är också möjligt att ställa in dem på tabellnivå.
Ändra en befintlig kolumn
Här är ett exempel på hur du ändrar sorteringen och teckenuppsättningen i en befintlig kolumn:
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET latin5 COLLATE latin5_turkish_ci;
EventName
kolumnen använder nu den nya sorteringen och teckenuppsättningen.
Kontrollera kolumnen
Det finns flera sätt att kontrollera sorteringen och teckenuppsättningen för en kolumn. Här är en:
SELECT
column_name,
character_set_name,
collation_name
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';
Resultat:
+-------------+--------------------+-------------------+ | column_name | character_set_name | collation_name | +-------------+--------------------+-------------------+ | EventName | latin5 | latin5_turkish_ci | +-------------+--------------------+-------------------+
Sorteringen måste vara giltig för teckenuppsättningen
När du ställer in både sorteringen och teckenuppsättningen måste du se till att sorteringen är giltig för den valda teckenuppsättningen och vice/versa. Om inte, returneras ett fel.
Här är ett exempel på hur du anger en ogiltig sortering för den angivna teckenuppsättningen:
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET utf16 COLLATE latin5_turkish_ci;
Resultat:
ERROR 1253 (42000): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf16'
Den talar om för oss att vår valda sortering inte är giltig för vår valda specificerade teckenuppsättning.
Se hela listan över sorteringar som stöds av MariaDB eller Fullständig lista över teckenuppsättningar som stöds av MariaDB för en lista över matchande sammanställningar och teckenuppsättningar.
Ange endast sortering eller teckenuppsättning
Det är OK att ange bara sorteringen eller bara teckenuppsättningen (eller ingetdera):
- Om endast teckenuppsättningen tillhandahålls kommer standardsorteringen för den teckenuppsättningen att användas.
- Om endast sorteringen tillhandahålls kommer den associerade teckenuppsättningen att användas.
- Om varken sortering eller teckenuppsättning tillhandahålls, används standardtabellen.
Konvertera till en teckenuppsättning som kräver fler byte
Det är också möjligt att konvertera teckenuppsättningen på tabellnivå. När du konverterar teckenuppsättningen på tabellnivå, finns det en chans att MariaDB automatiskt konverterar datatypen till en som bättre kan hantera den nya teckenuppsättningen.
Men när vi använder MODIFY
på de enskilda kolumnerna och explicit specificerar datatypen (som vi gjorde i de tidigare exemplen), förhindrar vi MariaDB från att konvertera datatypen.
Konverterar till binärt
CONVERT TO CHARACTER SET binary
konverterar CHAR
, VARCHAR
och TEXT
kolumner till BINARY
, VARBINARY
och BLOB
respektive.
När detta har gjorts kommer sådana kolumner inte längre att ha en teckenuppsättning. Dessutom kommer de inte längre att påverkas av framtida CONVERT TO CHARACTER SET
uttalanden.
Kontrollera sortering och teckenuppsättningar i MariaDB
Det finns olika sätt att kontrollera sorteringen och teckenuppsättningarna i MariaDB, beroende på vilken nivå du kontrollerar (server, databas, tabell, kolumn, anslutning, etc). Se Visa sorteringen i MariaDB för exempel.