MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Ustaw zestaw znaków i sortowanie kolumny w MariaDB

Zestaw znaków i sortowanie można określić na różnych poziomach w MariaDB. Możesz określić je na poziomie połączenia, serwera, bazy danych, tabeli, a nawet kolumny.

Możesz również określić sortowanie w swoich zapytaniach, aby zastąpiło ono wszelkie sortowanie, które zostało wcześniej określone na wyżej wymienionych poziomach.

Aby ustawić zestaw znaków i sortowanie na poziomie kolumny, użyj CREATE TABLE oświadczenie lub ALTER TABLE oświadczenie (w zależności od tego, czy tworzysz tabelę, czy ją modyfikujesz).

Podczas tworzenia tabeli

Oto przykład ustawienia sortowania i zestawu znaków w kolumnie podczas tworzenia tabeli:

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

Tutaj określiłem zestaw znaków i sortowanie na poziomie kolumny. Możliwe jest również ustawienie ich na poziomie stołu.

Zmień istniejącą kolumnę

Oto przykład zmiany sortowania i zestawu znaków w istniejącej kolumnie:

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

EventName kolumna używa teraz nowego sortowania i zestawu znaków.

Sprawdź kolumnę

Istnieje kilka sposobów sprawdzenia sortowania i zestawu znaków kolumny. Oto jeden:

SELECT
    column_name, 
    character_set_name, 
    collation_name 
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';

Wynik:

+-------------+--------------------+-------------------+
| column_name | character_set_name | collation_name    |
+-------------+--------------------+-------------------+
| EventName   | latin5             | latin5_turkish_ci |
+-------------+--------------------+-------------------+

Układ musi być prawidłowy dla zestawu znaków

Podczas ustawiania zarówno sortowania, jak i zestawu znaków, należy upewnić się, że sortowanie jest prawidłowe dla wybranego zestawu znaków i odwrotnie. Jeśli nie, zwracany jest błąd.

Oto przykład określenia przy użyciu nieprawidłowego sortowania dla określonego zestawu znaków:

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

Wynik:

ERROR 1253 (42000): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf16'

Mówi nam, że wybrane przez nas sortowanie nie jest prawidłowe dla wybranego zestawu znaków.

Zobacz Pełna lista sortowań obsługiwanych przez MariaDB lub Pełna lista zestawów znaków obsługiwanych przez MariaDB, aby uzyskać listę pasujących sortowań i zestawów znaków.

Określanie tylko sortowania lub zestawu znaków

Można określić tylko sortowanie lub tylko zestaw znaków (lub nie):

  • Jeśli podano tylko zestaw znaków, zostanie użyte domyślne sortowanie dla tego zestawu znaków.
  • Jeśli podano tylko sortowanie, zostanie użyty powiązany zestaw znaków.
  • Jeśli nie podano sortowania ani zestawu znaków, używana jest wartość domyślna tabeli.

Konwersja do zestawu znaków, który wymaga więcej bajtów

Możliwe jest również przekonwertowanie zestawu znaków na poziomie stołu. Podczas konwertowania zestawu znaków na poziomie tabeli istnieje szansa, że ​​MariaDB może automatycznie przekonwertować typ danych na taki, który lepiej radzi sobie z nowym zestawem znaków.

Jednak gdy używamy MODIFY w poszczególnych kolumnach i jawnie określ typ danych (tak jak zrobiliśmy to w poprzednich przykładach), uniemożliwiamy MariaDB konwersję typu danych.

Konwertowanie do formatu binarnego

CONVERT TO CHARACTER SET binary przekonwertuje CHAR , VARCHAR i TEXT kolumny do BINARY , VARBINARY i BLOB odpowiednio.

Gdy to zostanie zrobione, takie kolumny nie będą już miały zestawu znaków. Ponadto nie będą już miały na nie wpływu przyszłe CONVERT TO CHARACTER SET oświadczenia.

Sprawdzanie sortowania i zestawów znaków w MariaDB

Istnieje wiele sposobów sprawdzania sortowania i zestawów znaków w MariaDB, w zależności od sprawdzanego poziomu (serwer, baza danych, tabela, kolumna, połączenie itp.). Zobacz Pokaż sortowanie w MariaDB, aby zapoznać się z przykładami.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB Z WYJĄTKIEM Operatora wyjaśniono

  2. MariaDB JSON_UNQUOTE() Objaśnienie

  3. Jak działa UNCOMPRESSED_LENGTH() w MariaDB

  4. MariaDB JSON_EXISTS() Objaśnienie

  5. Obsługa problemów z replikacją z klastrów bazy danych MariaDB bez GTID do GTID