11.1.3 文字列型の概要

文字列データ型のサマリーについて説明します。文字列型のプロパティーおよびストレージ要件の追加情報については、セクション11.4「文字列型」およびセクション11.7「データ型のストレージ要件」を参照してください。

MySQL は、文字列カラムを CREATE TABLE または ALTER TABLE ステートメントで与えられている型とは異なる型に変更することがあります。セクション13.1.17.3「暗黙のカラム指定の変更」を参照してください。

MySQL は、文字カラム定義の長さ指定を文字単位で解釈します。これは、CHARVARCHAR、および TEXT 型に適応されます。

多くの文字列データ型のカラム定義には、カラムの文字セットまたは照合順序を指定する属性を含めることができます。これらの属性は CHARVARCHARTEXT 型、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 属性、あるいはその両方がない場合に、文字セットや照合順序を割り当てるためのルールは、セクション10.1.3.4「カラム文字セットおよび照合順序」で説明しています。

    CHARSETCHARACTER SET のシノニムです。

  • 文字データ型に CHARACTER SET binary 属性を指定すると、カラムは対応するバイナリデータ型として作成されます。つまり、CHARBINARY になり、VARCHARVARBINARY になり、TEXTBLOB になります。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 属性は、カラム文字セットのバイナリ照合順序を指定する短縮形です。この場合、ソートと比較は数字の値に基づきます。

文字カラムのソートと比較は、カラムに割り当てられた文字セットに基づきます。CHARVARCHARTEXTENUM、および SET データ型では、辞書順ではなくベースとなる文字コード値をソートおよび比較で使用できるように、バイナリ照合順序または BINARY 属性を持つカラムを宣言できます。

セクション10.1「文字セットのサポート」では、MySQL の文字セットの使用に関する追加情報が記述されています。

  • [NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

    格納時に必ず、指定された長さになるように右側がスペースで埋められる固定長文字列です。M はカラムの長さを文字数で表します。M の範囲は 0 から 255 です。M を省略すると、長さは 1 になります。

    注記

    PAD_CHAR_TO_FULL_LENGTH SQL モードが有効になっていないかぎり、CHAR 値が取り出されるときに末尾のスペースは削除されます。

    CHARCHARACTER の短縮形です。NATIONAL CHAR (またはそれと同等の短縮形である NCHAR) は、CHAR カラムが事前に定義された文字セットを使用する必要があることを定義する標準 SQL の方法です。MySQL 4.1 以降では、この事前に定義された文字セットとして utf8 を使用します。セクション10.1.3.6「各国文字セット」を参照してください。

    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 文字になるように宣言できます。セクションD.10.4「テーブルカラム数と行サイズの制限」を参照してください。

    MySQL は、VARCHAR 値を 1 バイトまたは 2 バイト長のプリフィクスが付いたデータとして格納します。長さプリフィクスは、値に含まれるバイト数を示します。VARCHAR カラムは、格納できる値が 255 バイト以下の場合は 1 バイト長のプリフィクスを使用し、255 バイトより大きい場合は 2 バイト長のプリフィクスを使用します。

    注記

    MySQL 5.6 は、標準 SQL 仕様に従い、VARCHAR 値から末尾のスペースを削除しません

    VARCHARCHARACTER VARYING の短縮形です。NATIONAL VARCHAR は、VARCHAR カラムが事前定義された文字セットを使用する必要があることを定義するための標準 SQL の方法です。MySQL 4.1 以降では、この事前に定義された文字セットとして utf8 を使用します。セクション10.1.3.6「各国文字セット」を参照してください。NVARCHARNATIONAL VARCHAR の短縮形です。

  • BINARY(M)

    BINARY 型は CHAR 型と似ていますが、非バイナリ文字列ではなく、バイナリバイト文字列を格納します。M はカラムの長さをバイト数で表します。

  • VARBINARY(M)

    VARBINARY 型は VARCHAR 型と似ていますが、非バイナリ文字列ではなく、バイナリバイト文字列を格納します。M はカラムの最大の長さをバイト数で表します。

  • TINYBLOB

    最大長が 255 (28 − 1) バイトの BLOB カラム。各 TINYBLOB 値は、値のバイト数を示す 1 バイト長のプリフィクスを使用して格納されます。

  • TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

    最大長が 255 (28 − 1) 文字の TEXT カラム。値にマルチバイト文字が含まれる場合、有効な最大長は少なくなります。各 TINYTEXT 値は、値のバイト数を示す 1 バイト長のプリフィクスを使用して格納されます。

  • BLOB[(M)]

    最大長が 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 型としてカラムを作成します。

  • MEDIUMBLOB

    最大長が 16,777,215 (224 − 1) バイトの BLOB カラム。各 MEDIUMBLOB 値は、値のバイト数を示す 3 バイト長のプリフィクスを使用して格納されます。

  • MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

    最大長が 16,777,215 (224 − 1) 文字の TEXT カラム。値にマルチバイト文字が含まれる場合、有効な最大長は少なくなります。各 MEDIUMTEXT 値は、値のバイト数を示す 3 バイト長のプリフィクスを使用して格納されます。

  • LONGBLOB

    最大長が 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 値は、内部では整数として表されます。

    ENUM カラムには、最大 65,535 個の個別の要素を含めることができます。(実用的な限度は 3000 個までです。)テーブルには、グループと見なされる ENUM および SET カラムの中の一意の要素リスト定義を、255 個以下を含めることができます。これらの制限の詳細は、セクションD.10.5「.frm ファイル構造により課せられる制限」を参照してください。

  • SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]

    セットです。ゼロ個以上の値を持つことができる文字列オブジェクトであり、そのそれぞれの値は、'value1''value2'... 値のリストから選択する必要があります。SET 値は整数として内部で表されます。

    SET カラムには最大 64 個の個別のメンバーを含めることができます。テーブルには、グループと見なされる ENUM および SET カラムの中の一意の要素リスト定義を、255 個以下を含めることができます。この制限の詳細は、セクションD.10.5「.frm ファイル構造により課せられる制限」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.