Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«MySQL: руководство профСссионала». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 49

Автор АлСксСй ΠŸΠ°ΡƒΡ‚ΠΎΠ²

КаТдая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов ΠΈ объСдинСниС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ CREATE DATABASE ΠΈ ALTER DATABASE ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ прСдлоТСния для опрСдСлСния Π½Π°Π±ΠΎΡ€Π° символов Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ объСдинСния:


CREATE DATABASE db_name

[[DEFAULT] CHARACTER SET charset_name]

[[DEFAULT] COLLATE collation_name]


ALTER DATABASE db_name

[[DEFAULT] CHARACTER SET charset_name]

[[DEFAULT] COLLATE collation_name]


ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово SCHEMA ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ вмСсто DATABASE.


ВсС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… сохранСны Π² тСкстовом Ρ„Π°ΠΉΠ»Π΅ db.opt, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ….


ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ CHARACTER SET ΠΈ COLLATE Π΄Π΅Π»Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ символов ΠΈ объСдинСниями Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ самом сСрвСрС MySQL.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

CREATE DATABASE db_name CHARACTER SET latin1

COLLATE latin1_swedish_ci;


MySQL Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов ΠΈ объСдинСниС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ способом:


Если CHARACTER SET X ΠΈ COLLATE Y Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов X ΠΈ объСдинСниС Y.


Если CHARACTER SET X ΡƒΠΊΠ°Π·Π°Π½ Π±Π΅Π· COLLATE, Ρ‚ΠΎ примСняСтся Π½Π°Π±ΠΎΡ€ символов X ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ объСдинСниС для Π½Π΅Π³ΠΎ.


Если COLLATE Y Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π±Π΅Π· CHARACTER SET, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов, связанный с Y, ΠΈ объСдинСниС Y.


Π˜Π½Π°Ρ‡Π΅, примСняСтся Π½Π°Π±ΠΎΡ€ символов ΠΈ объСдинСниС сСрвСра.


Набор символов Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ объСдинСниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли Π½Π°Π±ΠΎΡ€ символов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ объСдинСниС Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² инструкции CREATE TABLE. Они Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†Π΅Π»ΠΈ.


Набор символов ΠΈ объСдинСниС для Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… систСмы character_set_database ΠΈ collation_database. Π‘Π΅Ρ€Π²Π΅Ρ€ устанавливаСт эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° заданная ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… измСняСтся. Если Π½Π΅ имССтся Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ систСмы уровня сСрвСра: character_set_server ΠΈ collation_server.

10.3.3. Набор символов ΠΈ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

КаТдая Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ объСдинСниС. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ CREATE TABLE ΠΈ ALTER TABLE ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ прСдлоТСния для опрСдСлСния Π½Π°Π±ΠΎΡ€Π° символов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ объСдинСния:


CREATE TABLE tbl_name

(column_list)

[[DEFAULT] CHARACTER SET charset_name]

[COLLATE collation_name]]

ALTER TABLE tbl_name

[[DEFAULT] CHARACTER SET charset_name]

[COLLATE collation_name]


ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

CREATE TABLE t1 ( … ) CHARACTER SET latin1 COLLATE latin1_danish_ci;


MySQL Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ объСдинСниС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ способом:


Если CHARACTER SET X ΠΈ COLLATE Y Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов X ΠΈ объСдинСниС Y.


Если CHARACTER SET X Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π±Π΅Π· COLLATE, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов X ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ объСдинСниС.


Если COLLATE Y Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π±Π΅Π· CHARACTER SET, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов, связанный с Y ΠΈ объСдинСниС Y.


Π˜Π½Π°Ρ‡Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов ΠΈ объСдинСниС ΠΎΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….


Набор символов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ объСдинСниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли Π½Π°Π±ΠΎΡ€ символов столбца ΠΈ объСдинСниС Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… опрСдСлСниях столбца. Набор символов ΠΈ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ MySQL, Π½Π΅ имССтся Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π² стандартС SQL.

10.3.4. Набор символов ΠΈ объСдинСниС столбца

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ столбСц (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, столбСц Ρ‚ΠΈΠΏΠ° CHAR, VARCHAR ΠΈΠ»ΠΈ TEXT) ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов ΠΈ объСдинСниС столбца. Бинтаксис опрСдСлСния столбца ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ прСдлоТСния для опрСдСлСния Π½Π°Π±ΠΎΡ€Π° символов ΠΈ объСдинСния столбца:


col_name {CHAR | VARCHAR | TEXT}

(col_length)

[CHARACTER SET charset_name]

[COLLATE collation_name]


ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

CREATE TABLE Table1

(column1 VARCHAR(5) CHARACTER SET latin1

COLLATE latin1_german1_ci);


MySQL Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов столбца ΠΈ объСдинСниС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ способом:


Если Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ CHARACTER SET X ΠΈ COLLATE Y, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов X ΠΈ объСдинСниС Y.


Есл Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ CHARACTER SET X Π±Π΅Π· COLLATE, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов X ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ объСдинСниС.


Если COLLATE Y Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π±Π΅Π· CHARACTER SET, Ρ‚ΠΎ примСняСтся Π½Π°Π±ΠΎΡ€ символов, связанный с Y, ΠΈ объСдинСниС Y.


Π˜Π½Π°Ρ‡Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов ΠΈ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.


ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ CHARACTER SET ΠΈ COLLATE стандартны для SQL.

10.3.5. Набор символов ΠΈ объСдинСниС ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π» ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов ΠΈ объСдинСниС.


Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ символов ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ COLLATE:

[_charset_name]'string'

[COLLATE collation_name]


ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

SELECT 'string';

SELECT _latin1'string';

SELECT _latin1'string' COLLATE latin1_danish_ci;


Для простой инструкции SELECT 'string', строка ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов ΠΈ объСдинСниС, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ систСмы character_set_connection ΠΈ collation_connection.


Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ _charset_name Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π½Π°Π·Π²Π°Π½ΠΎ introducer. Π­Ρ‚ΠΎ сообщаСт синтаксичСскому Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ, Ρ‡Ρ‚ΠΎ строка ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ соотвСтствуСт Π½Π°Π±ΠΎΡ€Ρƒ символов X. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ, слСдуСт особо ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ introducer Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, это строго сигнал, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ измСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ строки. Introducer Ρ‚Π°ΠΊΠΆΠ΅ допустим ΠΏΠ΅Ρ€Π΅Π΄ стандартным ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ ΠΈ числовой ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ записью (x'literal' ΠΈ 0xnnnn)>.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

SELECT _latin1 x'AABBCC';

SELECT _latin1 0xAABBCC;


MySQL опрСдСляСт Π½Π°Π±ΠΎΡ€ символов Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° ΠΈ объСдинСниС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ способом:


Если Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ _X ΠΈ COLLATE Y, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов X ΠΈ объСдинСниС Y.


Если ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ _X, Π½ΠΎ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ COLLATE, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов X ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ объСдинСниС.


Π˜Π½Π°Ρ‡Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ символов ΠΈ объСдинСниС, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ систСмы character_set_connection ΠΈ collation_connection.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


Π‘Ρ‚Ρ€ΠΎΠΊΠ° с Π½Π°Π±ΠΎΡ€ΠΎΠΌ символов latin1 ΠΈ объСдинСниСм latin1_german1_ci:

SELECT _latin1'Mβ”œβ•ller' COLLATE latin1_german1_ci;


Π‘Ρ‚Ρ€ΠΎΠΊΠ° с Π½Π°Π±ΠΎΡ€ΠΎΠΌ символов latin1 ΠΈ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ объСдинСниСм (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, latin1_swedish_ci):

SELECT _latin1'Mβ”œβ•ller';


Π‘Ρ‚Ρ€ΠΎΠΊΠ° с Π½Π°Π±ΠΎΡ€ΠΎΠΌ символов ΠΈ объСдинСниСм ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

SELECT 'Mβ”œβ•ller';


Набор символов ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ COLLATE Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ согласно стандарту SQL


introducer ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ символов для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки, Π½ΠΎ Π½Π΅ измСняСт Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ выполняСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Escape Π²Π½ΡƒΡ‚Ρ€ΠΈ строки. Escape всСгда ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ синтаксичСским Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ согласно Π½Π°Π±ΠΎΡ€Ρƒ символов, Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ Π² character_set_connection.


Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ происходит ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Escape, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ character_set_connection Π΄Π°ΠΆΠ΅ Π² присутствии introducer. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ SET NAMES (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ измСняСт character_set_connection) ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ строки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ HEX(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ Π²ΠΈΠ΄Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ строковоС содСрТимоС.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:

mysql> SET NAMES latin1;

Query OK, 0 rows affected (0.01 sec)

mysql> SELECT HEX('β”œΠ°\n'), HEX(_sjis'β”œΠ°\n');

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

| HEX('β”œΠ°\n') | HEX(_sjis'β”œΠ°\n') |

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

| E00A | E00A |

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

1 row in set (0.00 sec)


Π—Π΄Π΅ΡΡŒ β”œΠ° (ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ E0) сопровоТдаСтся \n, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ для Π½ΠΎΠ²ΠΎΠΉ строки. Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ интСрпрСтируСтся, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ character_set_connection latin1, Ρ‡Ρ‚ΠΎΠ±Ρ‹ произвСсти Π»ΠΈΡ‚Π΅Ρ€Π°Π» newline (новая строка, ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0A). Π­Ρ‚ΠΎ случаСтся Π΄Π°ΠΆΠ΅ для Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки. Π’ΠΎ Π΅ΡΡ‚ΡŒ introducer _sjis Π½Π΅ воздСйствуСт Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Escape.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:

mysql> SET NAMES sjis;

Query OK, 0 rows affected (0.00 sec)

mysql> SELECT HEX('β”œΠ°\n'), HEX(_latin1'β”œΠ°\n');

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

| HEX('β”œΠ°\n') | HEX(_latin1'β”œΠ°\n') |

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

| E05C6E | E05C6E |

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

1 row in set (0.04 sec)


Π—Π΄Π΅ΡΡŒ character_set_connection Ρ€Π°Π²Π΅Π½ sjis, Π½Π°Π±ΠΎΡ€ символов Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β”œΠ° сопровоТдаСтся \ (ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ значСния 05 ΠΈ 5C), допустимый ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ символ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° строки ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ символ sjis, ΠΈ \ Π½Π΅ обрабатываСтся ΠΊΠ°ΠΊ символ ESC. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ n (ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 6E) Π½Π΅ интСрпрСтируСтся ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, introducer _latin1 Π½Π΅ воздСйствуСт Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Escape.