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.