U kunt de tekenset en sortering op verschillende niveaus in MariaDB specificeren. U kunt ze specificeren op verbindingsniveau, serverniveau, databaseniveau, tabelniveau en zelfs kolomniveau.
U kunt ook een sortering in uw zoekopdrachten specificeren, zodat deze alle eerder gespecificeerde sorteringen op de bovengenoemde niveaus overschrijft.
Om de tekenset en sortering op kolomniveau in te stellen, gebruikt u de CREATE TABLE
statement of ALTER TABLE
statement (afhankelijk van of je de tabel aan het maken bent of aanpast).
Bij het maken van de tabel
Hier is een voorbeeld van het instellen van de sortering en tekenset op een kolom bij het maken van de tabel:
CREATE TABLE Events (
EventId INT AUTO_INCREMENT NOT NULL,
EventName VARCHAR(255)
CHARACTER SET utf8
COLLATE utf8_spanish_ci,
PRIMARY KEY (EventId)
);
Hier heb ik de tekenset en sortering op kolomniveau gespecificeerd. Het is ook mogelijk om ze op tafelniveau in te stellen.
Een bestaande kolom wijzigen
Hier is een voorbeeld van het wijzigen van de sortering en tekenset op een bestaande kolom:
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET latin5 COLLATE latin5_turkish_ci;
De EventName
kolom gebruikt nu de nieuwe sortering en tekenset.
Controleer de kolom
Er zijn verschillende manieren om de sortering en tekenset van een kolom te controleren. Hier is er een:
SELECT
column_name,
character_set_name,
collation_name
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';
Resultaat:
+-------------+--------------------+-------------------+ | column_name | character_set_name | collation_name | +-------------+--------------------+-------------------+ | EventName | latin5 | latin5_turkish_ci | +-------------+--------------------+-------------------+
Collatie moet geldig zijn voor de tekenset
Wanneer u zowel de sortering als de tekenset instelt, moet u ervoor zorgen dat de sortering geldig is voor de gekozen tekenset en omgekeerd. Zo niet, dan wordt er een fout geretourneerd.
Hier is een voorbeeld van het specificeren van een ongeldige sortering voor de opgegeven tekenset:
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET utf16 COLLATE latin5_turkish_ci;
Resultaat:
ERROR 1253 (42000): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf16'
Het vertelt ons dat onze gekozen sortering niet geldig is voor onze gekozen gespecificeerde tekenset.
Zie de volledige lijst met door MariaDB ondersteunde sorteringen of de volledige lijst met door MariaDB ondersteunde tekensets voor een lijst met overeenkomende sorteringen en tekensets.
Alleen de sortering of tekenset specificeren
Het is prima om alleen de sortering of alleen de tekenset (of geen van beide) op te geven:
- Als alleen de tekenset is opgegeven, wordt de standaardsortering voor die tekenset gebruikt.
- Als alleen de sortering wordt opgegeven, wordt de bijbehorende tekenset gebruikt.
- Als er geen sortering of tekenset is opgegeven, wordt de standaardtabel gebruikt.
Converteren naar een tekenset die meer bytes vereist
Het is ook mogelijk om de tekenset op tabelniveau om te zetten. Bij het converteren van de tekenset op tabelniveau bestaat de kans dat MariaDB het gegevenstype automatisch converteert naar een type dat beter in staat is om met de nieuwe tekenset om te gaan.
Wanneer we echter MODIFY
. gebruiken op de afzonderlijke kolommen en expliciet het gegevenstype specificeren (zoals we deden in de vorige voorbeelden), voorkomen we dat MariaDB het gegevenstype converteert.
Converteren naar binair
CONVERT TO CHARACTER SET binary
converteert CHAR
, VARCHAR
en TEXT
kolommen naar BINARY
, VARBINARY
en BLOB
respectievelijk.
Zodra dit is gebeurd, hebben dergelijke kolommen geen tekenset meer. Ze worden ook niet langer beïnvloed door toekomstige CONVERT TO CHARACTER SET
verklaringen.
De sortering en tekensets in MariaDB controleren
Er zijn verschillende manieren om de sortering en tekensets in MariaDB te controleren, afhankelijk van het niveau dat u controleert (server, database, tabel, kolom, verbinding, enz.). Zie Toon de sortering in MariaDB voor voorbeelden.