sql >> Database teknologi >  >> RDS >> MariaDB

Indstil tegnsættet og samlingen af ​​en kolonne i MariaDB

Du kan angive tegnsættet og sorteringen på forskellige niveauer i MariaDB. Du kan angive dem på forbindelsesniveau, serverniveau, databaseniveau, tabelniveau og endda kolonneniveau.

Du kan også angive en sortering i dine forespørgsler, så den tilsidesætter enhver sortering, der tidligere er blevet specificeret på de førnævnte niveauer.

For at indstille tegnsættet og sorteringen på kolonneniveau skal du bruge CREATE TABLE sætning eller ALTER TABLE sætning (afhængigt af om du opretter tabellen eller ændrer den).

Når du opretter tabellen

Her er et eksempel på indstilling af sortering og tegnsæt på en kolonne, når du opretter tabellen:

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

Her specificerede jeg tegnsættet og sorteringen på kolonneniveau. Det er også muligt at sætte dem på tabelniveau.

Ændre en eksisterende kolonne

Her er et eksempel på ændring af sortering og tegnsæt på en eksisterende kolonne:

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

EventName kolonne bruger nu det nye sortering og tegnsæt.

Tjek kolonnen

Der er flere måder at kontrollere sorteringen og tegnsættet for en kolonne på. Her er 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 |
+-------------+--------------------+-------------------+

Sammenstilling skal være gyldig for tegnsættet

Når du indstiller både sorteringen og tegnsættet, skal du sikre dig, at sorteringen er gyldig for det valgte tegnsæt og omvendt. Hvis ikke, returneres en fejl.

Her er et eksempel på angivelse af brug af en ugyldig sortering for det angivne tegnsæt:

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'

Det fortæller os, at vores valgte sortering ikke er gyldig for vores valgte specificerede tegnsæt.

Se den fulde liste over sorteringer, der understøttes af MariaDB eller den fulde liste over tegnsæt, der understøttes af MariaDB for en liste over matchende sorteringer og tegnsæt.

Kun angivelse af sortering eller tegnsæt

Det er OK kun at angive sorteringen eller kun tegnsættet (eller ingen af ​​delene):

  • Hvis kun tegnsættet er angivet, vil standardsorteringen for det pågældende tegnsæt blive brugt.
  • Hvis kun sorteringen er angivet, vil det tilknyttede tegnsæt blive brugt.
  • Hvis hverken sortering eller tegnsæt er angivet, bruges tabelstandarden.

Konvertering til et tegnsæt, der kræver flere bytes

Det er også muligt at konvertere tegnsættet på tabelniveau. Når du konverterer tegnsættet på tabelniveau, er der en chance for, at MariaDB automatisk konverterer datatypen til en, der er bedre i stand til at håndtere det nye tegnsæt.

Men når vi bruger MODIFY på de enkelte kolonner og eksplicit specificerer datatypen (som vi gjorde i de foregående eksempler), forhindrer vi MariaDB i at konvertere datatypen.

Konvertering til binær

CONVERT TO CHARACTER SET binary vil konvertere CHAR , VARCHAR og TEXT kolonner til BINARY , VARBINARY og BLOB henholdsvis.

Når dette er gjort, vil sådanne kolonner ikke længere have et tegnsæt. De vil heller ikke længere blive påvirket af fremtidige CONVERT TO CHARACTER SET udsagn.

Kontrol af sortering og tegnsæt i MariaDB

Der er forskellige måder at kontrollere sorteringen og tegnsættene i MariaDB, afhængigt af det niveau, du tjekker (server, database, tabel, kolonne, forbindelse osv.). Se Vis sorteringen i MariaDB for eksempler.


  1. 7 muligheder for at aktivere rør (||) som sammenkædningsoperatør i MariaDB

  2. PostgreSQL 9-installation på Windows:Kan ikke skrive inde i TEMP-miljøstien.

  3. Sådan fungerer TRIM() i MariaDB

  4. Sådan fungerer TIME_FORMAT() i MariaDB