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

Задайте набора от символи и сортиране на таблица в MariaDB

Можете да посочите набора от знаци и сортиране на различни нива в MariaDB. Можете да ги зададете на ниво връзка, на ниво сървър, на ниво база данни, на ниво таблица и дори на ниво колона.

Можете също да посочите съпоставяне във вашите заявки, така че да отменя всяко съпоставяне, което е било предварително определено на гореспоменатите нива.

За да зададете набора от знаци и сортиране на ниво таблица, използвайте CREATE TABLE изявление или ALTER TABLE изявление (в зависимост от това дали създавате таблицата или я модифицирате).

При създаване на таблицата

Ето пример за настройка на съпоставянето и набора от знаци при създаване на таблицата:

CREATE TABLE Products ( 
    ProductId CHAR(10), 
    ProductName VARCHAR(255) NOT NULL, 
    PRIMARY KEY (ProductId)) 
    CHARACTER SET latin1 
    COLLATE latin1_general_ci;

Това създава таблица, наречена Products с latin1 набор от знаци и съпоставяне на latin1_general_ci .

Промяна на съществуваща таблица

Ето пример за промяна на съпоставянето и набора от знаци в съществуваща таблица:

ALTER TABLE Products 
CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;

Сега използва новото сортиране и набор от знаци.

Възможно е също да пропуснете CONVERT TO част:

ALTER TABLE Products 
CHARACTER SET utf8 
COLLATE utf8_spanish_ci;

Сравняването трябва да е валидно за набора от знаци

Когато задавате както сортирането, така и набора от знаци, трябва да се уверите, че съпоставянето е валидно за избрания набор от знаци и обратно/обратно. Ако не, се връща грешка.

Ето пример за указване на използване на невалидно съпоставяне за посочения набор от знаци:

ALTER TABLE Products 
CHARACTER SET latin1 
COLLATE utf8_spanish_ci;

Резултат:

ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'

Той ни казва, че избраното от нас съпоставяне не е валидно за избрания от нас определен набор от знаци.

Вижте Пълен списък на съпоставянията, поддържани от MariaDB или Пълен списък с набори от символи, поддържани от MariaDB, за списък на съвпадащите съпоставяния и набори от знаци.

Указване само на съпоставянето или набора от знаци

Добре е да посочите само съпоставянето или само набора от знаци (или нито едното):

  • Ако е предоставен само наборът от знаци, ще се използва съпоставянето по подразбиране за този набор от знаци.
  • Ако е предоставено само съпоставяне, ще се използва свързаният набор от знаци.
  • Ако не са предоставени нито съпоставяне, нито набор от знаци, се използва таблицата по подразбиране.

Преобразуване в набор от знаци, който изисква повече байтове

За VARCHAR или TEXT колони, CONVERT TO CHARACTER SET променя типа данни, ако е необходимо, за да се гарантира, че новата колона е достатъчно дълга, за да съхранява толкова знака, колкото оригиналната колона.

Например, ascii TEXT колоната изисква един байт на знак, така че колоната може да съдържа до 65 535 знака. Ако колоната се преобразува в utf8, може да са необходими до 3 байта за всеки знак, така че колоната ще бъде преобразувана в MEDIUMTEXT (който има максимална дължина от 16 777 215), така че ще може да побере същия брой знаци.

Ако не искате такива промени в типа данни да се извършват, използвайте MODIFY вместо това върху отделните колони.

Например:

ALTER TABLE Products 
MODIFY ProductName VARCHAR(255) 
CHARACTER SET utf8; 

Преобразуване в двоичен файл

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. Оперативни отчети за MySQL, MariaDB, PostgreSQL и MongoDB

  2. Как работи MAKETIME() в MariaDB

  3. Предоставяне на по-бързи иновации в общността на MariaDB

  4. Първи стъпки с MariaDB с помощта на Docker, Java Spring и JDBC

  5. Персонализирани графики за наблюдение на вашите MySQL, MariaDB, MongoDB и PostgreSQL системи - ClusterControl Съвети и трикове