このページは機械翻訳したものです。
すべての「「文字型」」カラム (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_nameCOLLATEの両方が指定されている場合、文字セットcollation_namecharset_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_nameCOLLATEなしで指定されている場合、文字セット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_SCHEMACHARACTER_SETSテーブルをクエリーします。 -
COLLATEがcollation_nameCHARACTER 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があります。 -
それ以外の場合 (
CHARACTER SETもCOLLATEも指定されていない場合)、テーブルの文字セットと照合順序が使用されます。CREATE TABLE t1 ( col1 CHAR(10) ) CHARACTER SET latin1 COLLATE latin1_bin;カラムに文字セットも照合順序も指定されていないため、テーブルのデフォルトが使用されます。 このカラムには、文字セット
latin1と照合順序latin1_binがあります。
CHARACTER SET および COLLATE 句は標準 SQL です。
ALTER TABLE を使用して、ある文字セットから別の文字セットにカラムを変換する場合、MySQL はデータ値をマップしようとしますが、文字セットに互換性がない場合、データの損失が生じる可能性があります。