sql >> Databasteknik >  >> RDS >> MariaDB

Ställ in teckenuppsättningen och sorteringen av en kolumn i MariaDB

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.


  1. Tips för att övervaka MariaDB-replikering med ClusterControl

  2. Så här använder du Sortering (Ordna efter) i Välj uttalande i SQL Server - SQL Server / TSQL Tutorial Del 109

  3. Ingen anslutning kunde göras eftersom målmaskinen aktivt vägrade det (PHP / WAMP)

  4. Övervakning av prestandaräknare via PERFMON | Felsökning av SQL Server-prestanda -3