sql >> Database >  >> RDS >> MariaDB

Stel de tekenset en sortering van een kolom in MariaDB in

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.


  1. Niet te verwaarlozen verschil in uitvoeringsplan met Oracle bij gebruik van jdbc Timestamp of Date

  2. Het dumpen van tabellen in orakel 10g met behulp van de PL/SQL-procedure

  3. Transformeer ODBC-gegevens in CloverDX

  4. Meerdere kolommen bijwerken in PostgreSQL