公式ドキュメントアドレス:10.3.5列の文字セットと照合順序
(で、タイプそれぞれ「文字」欄CHAR
、VARCHAR
、TEXT
タイプ、または任意の同義語の列)は、文字セットとカラム照合列があります。CREATE TABLE
また、ALTER TABLE
列定義構文の文字セットと、指定された列のオプション句の照合:
col_name {
CHAR | VARCHAR | TEXT} (col_length)
[CHARACTER SET charset_name]
[COLLATE collation_name]
これらの句は、ENUM
合計SET
列にも使用できます。
col_name {
ENUM | SET} (val_list)
[CHARACTER SET charset_name]
[COLLATE collation_name]
例:
CREATE TABLE t1
(
col1 VARCHAR(5)
CHARACTER SET latin1
COLLATE latin1_german1_ci
);
ALTER TABLE t1 MODIFY
col1 VARCHAR(5)
CHARACTER SET latin1
COLLATE latin1_swedish_ci;
MySQLは、次の方法を使用して列の文字セットを選択し、並べ替えます。
CHARACTER SET charset_name
合計を同時に指定する場合はCOLLATE collation_name
、文字セットcharset_name
と照合順序が使用されcollation_name
ます。
CREATE TABLE t1
(
col1 CHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci
) CHARACTER SET latin1 COLLATE latin1_bin;
列には文字セットと照合順序が指定されているため、これらが使用されます。列には文字セットutf8
と照合順序がありますutf8_unicode_ci
。
- 指定されたものが指定されて
CHARACTER SET charset_name
いない場合、COLLATE
文字セットcharset_name
とそのデフォルトの照合順序が使用されます。
CREATE TABLE t1
(
col1 CHAR(10) CHARACTER SET utf8
) CHARACTER SET latin1 COLLATE latin1_bin;
列に文字セットが指定されていますが、照合順序が指定されていません。列には、utf8
文字セットとのutf8
デフォルトの照合順序がありますutf8_general_ci
。各文字セットのデフォルトの照合順序を表示するには、SHOW CHARACTER SET
ステートメントまたはルックアップINFORMATION_SCHEMA
CHARACTER_SETS
テーブルを使用できます。
- のみが存在しない場合は
COLLATE collation_name
どれもCHARACTER SET
、使用collation_name
に関連するキャラクタセットおよびcollation_name
照合を。
CREATE TABLE t1
(
col1 CHAR(10) COLLATE utf8_polish_ci
) CHARACTER SET latin1 COLLATE latin1_bin;
列に照合順序が指定されていますが、文字セットが指定されていません。列にはutf8_polish_ci
照合順序があり、文字セットは照合順序に関連付けられた文字セットutf8
です。
- 文字セットと照合順序が指定されていない場合は、テーブルの文字セットと照合順序が使用されます。
CREATE TABLE t1
(
col1 CHAR(10)
) CHARACTER SET latin1 COLLATE latin1_bin;
列に文字セットまたは照合順序が指定されていないため、テーブルのデフォルトの文字セットまたは照合順序が使用されます。列には文字セットlatin1
と照合順序がありますlatin1_bin
。
CHARACTER SET
andCOLLATE
句は標準SQLです。
ALTER TABLE
列をある文字セットから別の文字セットに変換するために使用する場合、MySQLはデータ値をマップしようとしますが、文字セットに互換性がない場合、データが失われる可能性があります。