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 tabeli, 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 podczas tworzenia tabeli:
CREATE TABLE Products (
ProductId CHAR(10),
ProductName VARCHAR(255) NOT NULL,
PRIMARY KEY (ProductId))
CHARACTER SET latin1
COLLATE latin1_general_ci;
To tworzy tabelę o nazwie Products
z latin1
zestaw znaków i zestawienie latin1_general_ci
.
Zmień istniejącą tabelę
Oto przykład zmiany sortowania i zestawu znaków w istniejącej tabeli:
ALTER TABLE Products
CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;
Używa teraz nowego sortowania i zestawu znaków.
Możliwe jest również pominięcie CONVERT TO
część:
ALTER TABLE Products
CHARACTER SET utf8
COLLATE utf8_spanish_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 Products
CHARACTER SET latin1
COLLATE utf8_spanish_ci;
Wynik:
ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'
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
Dla VARCHAR
lub TEXT
kolumny, CONVERT TO CHARACTER SET
zmienia typ danych, jeśli jest to wymagane, aby zapewnić, że nowa kolumna jest wystarczająco długa, aby pomieścić tyle znaków, co oryginalna kolumna.
Na przykład ascii TEXT
kolumna wymaga jednego bajtu na znak, więc kolumna może zawierać do 65 535 znaków. Jeśli kolumna jest konwertowana na utf8, do każdego znaku mogą być wymagane maksymalnie 3 bajty, więc kolumna zostanie skonwertowana na MEDIUMTEXT
(który ma maksymalną długość 16 777 215), dzięki czemu będzie w stanie pomieścić taką samą liczbę znaków.
Jeśli nie chcesz, aby takie zmiany typu danych miały miejsce, użyj MODIFY
zamiast tego na poszczególnych kolumnach.
Na przykład:
ALTER TABLE Products
MODIFY ProductName VARCHAR(255)
CHARACTER SET utf8;
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.