ОСОБЕННОСТИ СУБД MYSQL

Сопоставления и наборы символов MySQL

Поскольку не все разработчики хранят строки данных на английском языке, важно чтобы сервер баз данных мог управлять неанглийскими символами и применять различные методы сортировки символов. При сопоставлении или сортировке строк оценка результата MySQL зависит от используемого набора символов и сопоставления. Наборы символов определяют символы для хранения. Например, вам может потребоваться хранить неанглийские символы «й». Упорядоченность строк определяется их сопоставлением. Для различных языков существуют разные сопоставления. Например, позиция символа «и» в алфавите различна в двух немецких классификациях и отличается от позиции в шведском или финском алфавите.

По умолчанию СУБД MySQL использует наборы latinl и сопоставление по умолчанию latinl_swedish_ci. Сервер MySQL можно конфигурировать для использования различных наборов символов и порядков сопоставления на уровне подключения, базы данных, таблицы и столбца.

Доступные на сервере наборы символов можно перечислить с помощью инструкции SHOW CHARACTER SET.

Так, набор символов latinl представляет собой кодовую страницу Windows 1252, которая поддерживает восточноевропейские языки. Сопоставлением по умолчанию для этого набора символов является latinl_swedish_ci, которое следует шведским правилам сортировки символов по возрастанию (английский язык соответствует этим правилам). Это сопоставление нечувствительно к регистру, на что указывают буквы «ci». И наконец каждый символ занимает один байт. При использовании набора символов ucs2 каждый символ требует 2 байта для хранения.

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

Создавая базу данных, возможно задать для нее и ее таблиц набор символов и порядок сортировки по умолчанию. Например, если использовать набор символов latinl и порядок сопоставления latinl_swedish_cs (чувствительный к регистру), то следует ввести следующую инструкцию:

mysql> CREATE DATABASE rose DEFAULT CHARACTER SET latinl COLLATE latinl_swedish_cs;

Query OK. 1 row affected (0.00 sec)

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

----------н

! Charset 1

r-----------------------------

1 Description

-+---------------------+--------+

! Default collation 1

1 Maxlen !

i big5

1 Big5 Traditional Chinese

! big5_chinese_ci 1

i 2 :

1 dec8 1

1 DEC West European

! dec8_swedish_ci 1

i 1 :

1 cp85O 1

1 DOS West European

! cp850_general_ci 1

1 1 !

1 hp8 1

1 HP West European

! hp8_english_ci 1

1 1 !

: koi8г 1

1 KOI8-R Relcom Russian

! koi8r_general_ci 1

1 1 !

! latinl

1 cpl252 West European

! latinl_swedish_ci 1

1 1 !

! Iatin2 1

1 ISO 8859-2 Central European

! Iatin2_general_ci 1

1 1 !

! sue?

1 Tbit Swedish

! swe?_swedish_ci 1

1 1 !

! ascii 1

1 US ASCII

! ascii_general_ci 1

1 1 !

! ujis

1 EUC-JP Japanese

! ujis_Japanese_ci 1

1 3 !

! sjis

1 Shift-JIS Japanese

! sjis japanese_ci 1

1 2 !

! hebrew

1 ISO 8859-8 Hebrew

! hebrew_general_ci 1

1 1 !

! tis620

1 TIS620 Thai

! tis620_thai_ci 1

1 1 !

! euckr

1 EUC-KR Korean

! euckr_korean_ci 1

1 2 !

! koi8u 1

1 K0I8-U Ukrainian

! koi8u_general_ci 1

1 1 !

! gb2312

1 GB2312 Simplified Chinese

! gb2312_chinese_ci 1

1 2 !

! greek 1

1 ISO 8859-7 Greek

! greek_general_ci 1

1 1 !

! cpl250 1

1 Windows Central European

i cpl250_general_ci 1

1 1 !

! gbk

1 GBK Simplified Chinese

! gbk_chinese_ci 1

1 2 !

! Iatin5

1 ISO 8859-9 Turkish

i latin5_turkish_ci 1

1 1 !

! armscii8 1

1 ARMSCII-8 Armenian

! armscii8_general_ci 1

1 1 !

! utf8 1

1 UTF-8 Unicode

i utf8_general_ci 1

1 3 !

! ucs2 1

1 UCS-2 Unicode

i ucs2_general_ci 1

1 2 !

! cp866

1 DOS Russian

i cp866_general_ci

1 1 !

! keybcs2 1

1 DOS Kamenicky Czech-Slovak

! keybcs2_general_ci

1 1 !

! macce 1

1 Mac Central European

! macce_general_ci

1 1 !

! macroman 1

1 Mac West European

! macroman_general_ci

1 1 !

! cp852 1

1 DOS Central European

! cp852_general_ci

1 1 !

! latin? 1

1 ISO 8859-13 Baltic

! Iatin7_general_ci

1 1 !

! cpl251 1

1 Windows Cyrillic

! cpl251_general_ci

1 1 !

! cpl256 1

1 Windows Arabic

! cpl256_general_ci

1 1 !

! cpl257

1 Windows Baltic

! cpl257_general_ci

1 1 !

! binary

1 Binary pseudo charset

! binary

1 1 !

! geostdS 1

1 GEOSTDS Georgian

! geostd8_general_ci

1 1 !

! cp932

1 SJIS for Windows Japanese

! cp932_japanese_ci

1 2 !

! eucjpms 1

1 UJIS for Windows Japanese

! eucjpms_japanese_ci

1 3 !

36 rows in j

:et <0.05 sec>

Рис. 10.1. Краткое описание каждого набора символов

На рис. 10.1 дано описание каждого набора символов, его сопоставление по умолчанию, а также максимальный объем в байтах, используемый для каждого символа в наборе:

mysql> SHOW CHARACTER SET;

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >