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

Indstil tegnsættet og samlingen af ​​en tabel 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å tabelniveau 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, når du opretter tabellen:

CREATE TABLE Products ( 
    ProductId CHAR(10), 
    ProductName VARCHAR(255) NOT NULL, 
    PRIMARY KEY (ProductId)) 
    CHARACTER SET latin1 
    COLLATE latin1_general_ci;

Det opretter en tabel kaldet Products med en latin1 tegnsæt og en sammenstilling af latin1_general_ci .

Ændre en eksisterende tabel

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

ALTER TABLE Products 
CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;

Den bruger nu den nye sortering og tegnsæt.

Det er også muligt at udelade CONVERT TO del:

ALTER TABLE Products 
CHARACTER SET utf8 
COLLATE utf8_spanish_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 Products 
CHARACTER SET latin1 
COLLATE utf8_spanish_ci;

Resultat:

ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'

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

For VARCHAR eller TEXT kolonner, CONVERT TO CHARACTER SET ændrer datatypen om nødvendigt for at sikre, at den nye kolonne er lang nok til at gemme lige så mange tegn som den oprindelige kolonne.

For eksempel en ascii TEXT kolonne kræver en enkelt byte pr. tegn, så kolonnen kan indeholde op til 65.535 tegn. Hvis kolonnen konverteres til utf8, kan der kræves op til 3 bytes for hvert tegn, så kolonnen vil blive konverteret til MEDIUMTEXT (som har en maksimal længde på 16.777.215), så den vil kunne indeholde det samme antal tegn.

Hvis du ikke ønsker, at sådanne datatypeændringer skal finde sted, skal du bruge MODIFY på de enkelte kolonner i stedet for.

For eksempel:

ALTER TABLE Products 
MODIFY ProductName VARCHAR(255) 
CHARACTER SET utf8; 

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. MySQL vs PostgreSQL? Hvilken skal jeg vælge til mit Django-projekt?

  2. Godkendelsesplugin 'caching_sha2_password' er ikke understøttet

  3. fejl ved indsættelse af android.database.sqlite.sqliteconstraintexception fejlkode 19 begrænsning mislykkedes

  4. Sådan bruges SQL Server HierarchyID gennem nemme eksempler