Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


10.1.3.4 カラム文字セットおよび照合順序

文字カラム (CHARVARCHAR、または 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 XCOLLATE Y の両方が指定されている場合、文字セット X と照合順序 Y が使用されます。

    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 X は指定されているが COLLATE は指定されていない場合、文字セット X とそのデフォルト照合順序が使用されます。

    CREATE TABLE t1
    (
        col1 CHAR(10) CHARACTER SET utf8
    ) CHARACTER SET latin1 COLLATE latin1_bin;

    カラムに対して文字セットは指定されていますが、照合順序は指定されていません。このカラムには、文字セット utf8 と、utf8 のデフォルトの照合順序である utf8_general_ci があります。各文字セットのデフォルトの照合順序を確認するには、SHOW COLLATION ステートメントを使用します。

  • COLLATE Y は指定されているが CHARACTER SET は指定されていない場合、Y に関連付けられた文字セットと照合順序 Y が使用されます。

    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 および COLLATE 句は標準 SQL です。

ALTER TABLE を使用して、ある文字セットから別の文字セットにカラムを変換する場合、MySQL はデータ値をマップしようとしますが、文字セットに互換性がない場合、データの損失が生じる可能性があります。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.