Можете да посочите набора от знаци и сортиране на различни нива в MariaDB. Можете да ги зададете на ниво връзка, на ниво сървър, на ниво база данни, на ниво таблица и дори на ниво колона.
Можете също да посочите съпоставяне във вашите заявки, така че да отменя всяко съпоставяне, което е било предварително определено на гореспоменатите нива.
За да зададете набора от знаци и сортиране на ниво колона, използвайте CREATE TABLE
изявление или ALTER TABLE
изявление (в зависимост от това дали създавате таблицата или я модифицирате).
При създаване на таблицата
Ето пример за настройка на съпоставянето и набора от знаци в колона при създаване на таблицата:
CREATE TABLE Events (
EventId INT AUTO_INCREMENT NOT NULL,
EventName VARCHAR(255)
CHARACTER SET utf8
COLLATE utf8_spanish_ci,
PRIMARY KEY (EventId)
);
Тук посочих набора от знаци и сортиране на ниво колона. Възможно е също да ги зададете на ниво таблица.
Промяна на съществуваща колона
Ето пример за промяна на съпоставянето и набора от знаци в съществуваща колона:
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET latin5 COLLATE latin5_turkish_ci;
EventName
колоната вече използва новото съпоставяне и набор от знаци.
Проверете колоната
Има няколко начина да проверите съпоставянето и набора от знаци на колона. Ето едно:
SELECT
column_name,
character_set_name,
collation_name
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';
Резултат:
+-------------+--------------------+-------------------+ | column_name | character_set_name | collation_name | +-------------+--------------------+-------------------+ | EventName | latin5 | latin5_turkish_ci | +-------------+--------------------+-------------------+
Сравняването трябва да е валидно за набора от знаци
Когато задавате както съпоставянето, така и набора от знаци, трябва да се уверите, че съпоставянето е валидно за избрания набор от знаци и обратно/обратно. Ако не, се връща грешка.
Ето пример за указване на използване на невалидно съпоставяне за посочения набор от знаци:
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET utf16 COLLATE latin5_turkish_ci;
Резултат:
ERROR 1253 (42000): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf16'
Той ни казва, че избраното от нас съпоставяне не е валидно за избрания от нас определен набор от знаци.
Вижте Пълен списък на съпоставянията, поддържани от MariaDB или Пълен списък с набори от символи, поддържани от MariaDB, за списък със съвпадащи съпоставяния и набори от знаци.
Указване само на съпоставянето или набора от знаци
Добре е да посочите само съпоставянето или само набора от знаци (или нито едното):
- Ако е предоставен само наборът от знаци, ще се използва съпоставянето по подразбиране за този набор от знаци.
- Ако е предоставено само съпоставяне, ще се използва свързаният набор от знаци.
- Ако не са предоставени нито съпоставяне, нито набор от знаци, се използва таблицата по подразбиране.
Преобразуване в набор от знаци, който изисква повече байтове
Възможно е също така да конвертирате набора от знаци на ниво таблица. Когато конвертирате набора от знаци на ниво таблица, има вероятност MariaDB автоматично да преобразува типа данни в такъв, който е по-способен да се справи с новия набор от знаци.
Въпреки това, когато използваме MODIFY
върху отделните колони и изрично указваме типа данни (както направихме в предишните примери), ние предотвратяваме MariaDB да преобразува типа данни.
Преобразуване в двоичен файл
CONVERT TO CHARACTER SET binary
ще преобразува CHAR
, VARCHAR
и TEXT
колони към BINARY
, VARBINARY
и BLOB
съответно.
След като това бъде направено, такива колони вече няма да имат набор от знаци. Освен това те вече няма да бъдат засегнати от бъдещи CONVERT TO CHARACTER SET
изявления.
Проверка на съпоставянето и наборите от знаци в MariaDB
Има различни начини за проверка на съпоставянето и наборите от знаци в MariaDB, в зависимост от нивото, което проверявате (сървър, база данни, таблица, колона, връзка и т.н.). Вижте Показване на съпоставянето в MariaDB за примери.