Рубрики
Uncategorized

MySQL (2) – Наборы символов и правила сравнения

Автор оригинала: David Wong.

Некоторые важные наборы символов

  1. ASCII

    • Всего включено 128 символов, включая пробелы, знаки препинания, цифры, прописные и строчные буквы и некоторые невидимые символы. Поскольку всего 128 символов, для кодирования можно использовать один байт.
  2. ISO 8859-1

    • Всего включено 256 символов. ASCII На основе набора символов расширено 128 общих символов (включая буквы из Германии и Франции) в Западной Европе, и для кодирования можно использовать один байт. Этот набор символов также имеет псевдоним latin1
  3. GB2312

    • Существует 6763 китайских иероглифа и 682 других иероглифа. В то же время этот набор символов совместим. ASCII набор символов
    • Если символ находится в ASCII В наборе символов используется 1 – байтовая кодировка, в противном случае используется 2-байтовая кодировка.
    • Количество байтов, необходимых для представления символа, может быть закодировано иначе, называемым кодированием переменной длины.
  4. GBK

    • В диапазоне включенных символов GB2312 Набор символов был расширен, и метод кодирования совместим. GB2312
  5. utf8

    • В нем собраны все персонажи, которых можно себе представить на земле, и он расширяется. Этот набор символов совместим ASCII Набор символов, использующий кодировку переменной длины, необходимо использовать кодировку символа 1~4 Байт

utf 8 Это просто схема кодирования набора символов Юникода. Юникод Наборы символов могут использоваться utf8utf16utf32 Эти схемы кодирования, utf8 Использование от 1 до 4 байт для кодирования символа, utf16 Использование двух или четырех байт для кодирования символа, utf32 Использование 4 байт для кодирования символа.

Наборы символов и правила сортировки, поддерживаемые в MySQL

Utf8 и utf8mb4 в MySQL

  • utf8mb3 Кастрированный utf8 Набор символов, использующий только 1-3 байта для представления символов
  • utf8mb4 Подлинный. utf8 Набор символов, использующий от 1 до 4 байт для представления символов

В MySQL utf8 да utf8mb3 Псевдоним

Просмотр наборов символов ПОКАЗАТЬ (НАБОР СИМВОЛОВ | КОДИРОВКА) [НАПРИМЕР, Совпадающие шаблоны]

Просмотр Правил сравнения ПОКАЗАТЬ ПАРАМЕТРЫ СОРТИРОВКИ [НАПРИМЕР, Режим сопоставления]

_аи Неизбирательный стресс акцент нечувствителен
_ас Дискриминация по стрессу чувствителен к акценту
_ci Без учета регистра без учета регистра
С учетом регистра чувствительный к регистру
_бин Бинарное сравнение двоичный

Применение набора символов и Правил сравнения

1. MySQL имеет четыре уровня наборов символов и правил сравнения

  1. Уровень сервера
  2. Уровень базы данных
  3. Уровень таблицы
  4. Уровень столбца

2. Уровень сервера

  • Наборы символов на уровне сервера: ПОКАЗЫВАТЬ ПЕРЕМЕННЫЕ, ТАКИЕ КАК "character_set_server"
  • Правила сравнения на уровне сервера: ПОКАЗЫВАТЬ ПЕРЕМЕННЫЕ, ТАКИЕ КАК 'collation_server'
  • Запись в файл конфигурации:
[server]
character_set_server=utf8
collation_server=utf8_general_ci

3. Уровень базы данных

  • Набор символов текущей базы данных: ПОКАЗАТЬ ПЕРЕМЕННЫЕ, ТАКИЕ КАК "character_set_database"
  • Текущие правила сравнения баз данных: ПОКАЗЫВАТЬ ПЕРЕМЕННЫЕ, ТАКИЕ КАК "база данных сортировки"
  • Набор символов и правила сравнения базы данных при создании и изменении базы данных
CREATE DATABASE database name
    [[DEFAULT] CHARACTER SET Character Set Name]
    [[DEFAULT] COLLATE Comparison Rule Name];

ALTER DATABASE database name
    [[DEFAULT] CHARACTER SET Character Set Name]
    [[DEFAULT] COLLATE Comparison Rule Name];

При создании базы данных не указываются наборы символов и правила сравнения, но по умолчанию используются наборы символов и правила сравнения на уровне сервера

4. уровень таблицы

CREATE TABLE Table Name (Column Information)
    [[DEFAULT] CHARACTER SET Character Set Name]
    [COLLATE Comparison Rule Name]]

ALTER TABLE Table Name
    [[DEFAULT] CHARACTER SET Character Set Name]
    [COLLATE Comparison Rule Name]

Если инструкция по созданию и изменению таблицы не определяет набор символов и правила сравнения, набор символов и правила сравнения базы данных, в которой находится таблица, будут использоваться в качестве набора символов и правил сравнения таблицы.

5. уровень столбца

CREATE TABLE Table Name(
    Column name string type [CHARACTER SET character set name] [COLLATE comparison rule name],
    Other columns...
);

ALTER TABLE table name MODIFY column name string type [CHARACTER SET character set name] [COLLATE comparison rule name];

Для столбца, если набор символов и правила сравнения не указаны в инструкции, созданной и измененной, набор символов и правила сравнения таблицы, в которой находится столбец, будут использоваться в качестве набора символов и правил сравнения столбца.

6. Изменяйте только наборы символов или правила сравнения

  • Если изменен только набор символов, правило сравнения будет изменено на правило сравнения по умолчанию для измененного набора символов.
  • Если изменено только правило сравнения, набор символов будет изменен на набор символов, соответствующий измененному правилу сравнения.

7. Краткое описание наборов символов и сравнение правил на всех уровнях

  • Если столбец создается или изменяется без явного указания набора символов и правил сравнения, по умолчанию в столбце используются набор символов и правила сравнения таблицы.
  • Если таблица создается или изменяется без явного указания наборов символов и правил сравнения, по умолчанию в таблице используются наборы символов базы данных и правила сравнения
  • Если при создании или изменении базы данных не указан явный набор символов и правила сравнения, база данных по умолчанию использует набор символов сервера и правила сравнения

Набор символов при обмене данными между Клиентом и Сервером

Процесс от отправки запроса до возврата результата сопровождается несколькими преобразованиями набора символов, в которых используются три системные переменные.

Набор символов, используемый Сервером при декодировании запросов character_set_client
Наборы символов, используемые в запущенном сервере character_set_connection
Набор символов, используемый сервером при возврате данных клиенту character_set_results
  • Сервер считает, что запрос, отправленный клиентом, используется character_set_client Закодирован
  • Сервер будет использовать полученный результирующий набор character_set_results Код и отправлять клиенту
  • character_set_connection Это просто набор символов, который серверы используют при обработке запросов. На самом деле не важно, что это такое, но важно отметить, что диапазон символов, содержащийся в наборе символов, должен охватывать символы в запросе и результирующем наборе. В противном случае невозможно будет закодировать символы в запросе. character_set_connection Наборы символов или символы, которые не могут быть закодированы в результирующем наборе

ИМЕНА НАБОРОВ Имя набора символов Эквивалентно:

  1. УСТАНОВИТЬ имя набора;
  2. УСТАНОВИТЬ имя набора;
  3. УСТАНОВИТЬ имя набора;

Если вы хотите записать в файл конфигурации:

[client]
default-character-set=utf8