MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Задайте набора от символи и съпоставяне на колона в MariaDB

Можете да посочите набора от знаци и сортиране на различни нива в 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 за примери.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Подобряване на производителността на бекенда, част 2/3:Използване на индекси на база данни

  2. Надстройка до най-новата Jira с най-новата версия на MariaDB Server

  3. MariaDB DEFAULT() Обяснено

  4. Извадете месец от дата в MariaDB

  5. Какво да търсите, ако вашата MySQL репликация изостава