文字列データ型の要約が次に紹介されています。文字列型の特性の詳細は、項6.4. 「文字列型」を参照してください。必要とする記憶容量は 項6.5. 「データ型のストレージ要件」 に紹介されています。
        MySQL は場合によって、文字列カラムを
        CREATE TABLE や
        ALTER TABLE
        ステートメントで与えられている型とは違うものに変更することがあります。項8.1.17.1. 「サイレントカラム仕様変更」
        を参照してください。
      
        MySQL
        は、文字単位の中の文字カラム定義の長さ仕様を解明します。これは、CHAR、VARCHAR、そして
        TEXT
        型に適応されます。
      
        多くの文字列データ型のカラム定義に、キャラクタセットやカラム照合を指定する属性を含むことができます。これらの属性は
        CHAR、VARCHAR、TEXT
        型、ENUM、そして
        SET
        データ型に適応します。
      
            CHARACTER SET
            属性はキャラクタセットを指定し、COLLATE
            属性はキャラクタセットの照合を指定します。例
            :
          
CREATE TABLE t
(
    c1 VARCHAR(20) CHARACTER SET utf8,
    c2 TEXT CHARACTER SET latin1 COLLATE latin1_general_cs
);
            このテーブル定義は、キャラクタセットのデフォルト照合を使った
            utf8
            のキャラクタセットを持つ
            c1
            という名前のカラムと、latin1
            のキャラクタセットと大文字と小文字を区別する照合を持つ
            c2
            という名前のカラムを作成します。
          
            CHARACTER SET
            属性または COLLATE
            属性 (あるいはその両方)
            がない場合にキャラクタセットや照合を割り当てるための規則は、Column Character Set and Collationに説明されています。
          
            CHARSET は
            CHARACTER SET
            の同義語です。
          
            文字データ型に CHARACTER SET
            binary
            属性を指定すると、カラムは対応するバイナリデータ型として作成されます。つまり、CHAR
            は
            BINARY、VARCHAR
            は
            VARBINARY、そして
            TEXT は
            BLOB
            になります。ENUM
            および SET
            データ型についてはこのような処理は行われず、宣言されたデータ型として作成されます。たとえば、次の定義を使用してテーブルを指定するとします。
          
CREATE TABLE t
(
  c1 VARCHAR(10) CHARACTER SET binary,
  c2 TEXT CHARACTER SET binary,
  c3 ENUM('a','b','c') CHARACTER SET binary
);
結果として得られるテーブルには、次の定義が含まれています。
CREATE TABLE t
(
  c1 VARBINARY(10),
  c2 BLOB,
  c3 ENUM('a','b','c') CHARACTER SET binary
);
            ASCII 属性は
            CHARACTER SET latin1
            の短縮形です。
          
            UNICODE 属性は
            CHARACTER SET ucs2
            の短縮形です。
          
            BINARY
            属性は、カラムキャラクタセットのバイナリ照合を指定する短縮形です。この場合、ソートと比較は数値文字値に基づきます。
          
        文字カラムのソートと比較は、カラムに割り当てられたキャラクタセットに基づいています。CHAR、VARCHAR、TEXT、ENUM、そして
        SET
        データ型に対して、語彙の順番ではなく基礎となる文字コード値を利用するために、バイナリ照合を持つカラムか、ソートと比較を行う
        BINARY
        属性を宣言することができます。
      
Character Set SupportMySQL の中でのキャラクタセットの使用についての追加情報を紹介しています。
            
            
            
            
            
            
            
            
            [NATIONAL]
            CHAR[(
          M)] [CHARACTER SET
            charset_name] [COLLATE
            collation_name]
            格納時に必ずスペースを使って指定された長さに詰められる固定長文字列。M
            はカラムの長さを文字数で表します。M
            の範囲は 0 から 255
            です。M
            を省略すると、長さは 1 になります。
          
              PAD_CHAR_TO_FULL_LENGTH
              SQL
              モードが有効になっていないかぎり、CHAR
              値が取り出されるときに末尾のスペースは削除されます。
            
            CHAR は
            CHARACTER
            の短縮形です。NATIONAL
            CHAR (またはそれと同等である
            NCHAR)
            は、CHAR
            カラムが定義済キャラクタセットを使用しなければいけないということを定義するための標準の
            SQL の方法です。MySQL 4.1
            以降のバージョンでは、この定義済キャラクタセットとして
            utf8
            を利用します。National Character Set.
          
            CHAR BYTE
            データ型は
            BINARY
            データ型の別名です。これは互換性の特徴です。
          
            MySQL で CHAR(0)
            型のカラムを作成することができます。これは主に、カラムの存在に頼っていても、その値は実際には使用しない古いアプリケーションに対応する必要があるときに便利なものです。CHAR(0)
            は、2
            つの値しか取れないカラムが必要な場合にも非常に便利です。CHAR(0)
            NULL として定義されたカラムは 1
            ビットだけを占め、NULL
            と '' (空の文字列)
            値だけを取ることができます。
          
            
            
            
            
            
            
            
            
            
            
            
            
            [NATIONAL]
            VARCHAR(
          M) [CHARACTER SET
            charset_name] [COLLATE
            collation_name]
            可変長文字列です。M
            はカラムの最大の長さを文字数で表します。M
            の範囲は 0 から 65,535
            です。VARCHAR
            カラムの有効な最大長は、最大行サイズ
            (65,535 バイト、すべてのカラムで共有される)
            と使用されるキャラクタセットによって決まります。たとえば、utf8
            の文字は 1 文字につき最高 3
            バイトを必要とする場合があるため、utf8
            のキャラクタセットを使用する
            VARCHAR
            カラムは、最大 21,844
            文字になるように宣言できます。
          
            MySQL
            では、VARCHAR
            値を 1 バイトまたは 2
            バイトの長さ接頭辞が付いたデータとして格納します。長さ接頭辞は、値に含まれるバイト数を示します。VARCHAR
            カラムでは、格納できる値が 255
            バイト以下の場合は 1
            バイト長の接頭辞を使用し、255
            バイトよりも大きい場合は 2
            バイト長の接頭辞を使用します。
          
              MySQL 5.1 は標準 SQL
              仕様に準拠しているため、VARCHAR
              値から末尾のスペースを削除しません。
            
            VARCHAR は
            CHARACTER
            VARYING
            の短縮形です。NATIONAL
            VARCHAR
            は、VARCHAR
            カラムが定義済みのキャラクタセットを使用すべきであることを定義するための標準
            SQL の方法です。MySQL 4.1
            以降のバージョンでは、この定義済キャラクタセットとして
            utf8
            を利用します。National Character Set.
            NVARCHAR は
            NATIONAL
            VARCHAR の短縮形です。
          
            BINARY 型は
            CHAR
            型と似ていますが、非バイナリ列ではなく、バイナリバイト列を格納します。M
            はカラムの長さをバイト数で表します。
          
            VARBINARY
            型は
            VARCHAR
            型と似ていますが、非バイナリ列ではなく、バイナリバイト列を格納します。M
            はカラムの最大の長さをバイト数で表します。
          
            最大 255 (28 - 1)
            バイトのデータを格納する
            BLOB
            カラムです。各
            TINYBLOB
            値は、値に含まれるバイト数を示す、1
            バイトの長さ接頭辞を使用して格納されます。
          
            
            
            TINYTEXT [CHARACTER SET
            
          charset_name] [COLLATE
            collation_name]
            最大 255 (28 -1)
            文字のデータを格納する
            TEXT
            カラムです。値にマルチバイト文字が含まれる場合、有効な最大長はこれよりも小さくなります。各
            TINYTEXT
            値は、値に含まれるバイト数を示す、1
            バイトの長さ接頭辞を使用して格納されます。
          
            最大 65,535 (216 - 1)
            バイトのデータを格納する
            BLOB
            カラムです。各
            BLOB
            値は、値に含まれるバイト数を示す、2
            バイトの長さ接頭辞を使用して格納されます。
          
            長さ M
            を任意で利用することもできます。もしこれを実行すると、MySQL
            は M
            バイトの長さの値を保持するのに十分な最小
            BLOB
            を作成します。
          
            
            
            TEXT[(
          M)]
            [CHARACTER SET charset_name]
            [COLLATE
            collation_name]
            最大 65,535 (216 -1)
            文字のデータを格納する
            TEXT
            カラムです。値にマルチバイト文字が含まれる場合、有効な最大長はこれよりも小さくなります。各
            TEXT
            値は、値に含まれるバイト数を示す、2
            バイトの長さ接頭辞を使用して格納されます。
          
            長さ M
            を任意で利用することもできます。もしこれを実行すると、MySQL
            は M
            文字の長さの値を保持するのに十分な最小
            TEXT
            型を作成します。
          
            最大 16,777,215 (224 - 1)
            バイトのデータを格納する
            BLOB
            カラムです。各
            MEDIUMBLOB
            値は、値に含まれるバイト数を示す、3
            バイトの長さ接頭辞を使用して格納されます。
          
            
            
            MEDIUMTEXT [CHARACTER SET
            
          charset_name] [COLLATE
            collation_name]
            最大 16,777,215 (224 -1)
            文字のデータを格納する
            TEXT
            カラムです。値にマルチバイト文字が含まれる場合、有効な最大長はこれよりも小さくなります。各
            MEDIUMTEXT
            値は、値に含まれるバイト数を示す、3
            バイトの長さ接頭辞を使用して格納されます。
          
            最大 4,294,967,295 または 4G
            (232 - 1)
            バイトのデータを格納する
            BLOB
            カラムです。LONGBLOB
            カラムの有効な最大長は、クライアント/サーバープロトコルと使用可能メモリーの中に組み込まれている最大パケットサイズにより決まります。各
            LONGBLOB
            値は、値に含まれるバイト数を示す、4
            バイトの長さ接頭辞を使用して格納されます。
          
            
            
            LONGTEXT [CHARACTER SET
            
          charset_name] [COLLATE
            collation_name]
            最大 4,294,967,295 または 4G バイト
            (232 - 1) 文字を格納する
            TEXT
            カラムです。値にマルチバイト文字が含まれる場合、有効な最大長はこれよりも小さくなります。LONGTEXT
            カラムの有効な最大長もまた、クライアント/サーバープロトコルと使用可能メモリーの中に組み込まれている最大パケットサイズにより決まります。各
            LONGTEXT
            値は、値に含まれるバイト数を示す、4
            バイトの長さ接頭辞を使用して格納されます。
          
            
            
            ENUM('
          value1','value2',...)
            [CHARACTER SET charset_name]
            [COLLATE
            collation_name]
            列挙です。値
            '、value1''、value2'...
            のリスト、NULL、または特殊な
            ''
            エラー値から選択された、1
            つの値だけを持つことができる文字列オブジェクトです。ENUM
            カラムは最高 65,535
            の異なる値を持つことができます。ENUM
            値は、内部的には整数として表されます。
          
            
            
            SET('
          value1','value2',...)
            [CHARACTER SET charset_name]
            [COLLATE
            collation_name]
            セットです。値
            '、value1''、value2'...
            のリストから選択する必要がある、ゼロ以上の値を持つことができる文字列オブジェクトです。1
            つの SET
            カラムには最高 64
            個のメンバーを格納できます。SET
            値は、内部的には整数として表されます。
          

