文字列型(データ型)のまとめ

説明
CHAR(M) Mの数の文字が格納できる大きさを持つ固定長の文字列。格納する文字が指定の長さより短い場合には空いたところにスペースが入る。1文字のバイト数は使用している文字コードのMAXLENになるため、MAXLEN × Mのバイトが使われる。(つまりSJISを使っている場合は、MAXLENが2バイトだが、MAXLENが何バイトであっても、指定した文字数が格納できる)。
CHAR CHAR(1)と同じ。1文字の文字列。
VARCHAR(M) 可変長文字列。Mの数の文字が格納できる。Mは0〜255の範囲で指定。格納する文字列の最後にスペースが入っていても削除されて格納される。
TEXT 最大長が 65535バイトの可変長文字列。

以下は詳細な内容です。

M:最大表示サイズを表す。正式な最大表示サイズは 255。
角かっこ('[' と ']')は、オプションの型指定子の一部であることを表します。

属性 説明
[NATIONAL] CHAR(M) [BINARY | ASCII | UNICODE] 固定長の文字列。格納時には、指定の長さになるよう、右側にスペースが埋め込まれる。M の範囲は 0 〜 255 文字(3.23 より前の MySQL バージョンでは 1 〜 255)。 値の取り出し時には、後続のスペースが削除される。BINARY キーワードを指定しない場合、CHAR 型の値のソートと比較は、デフォルトのキャラクタセットに基づいてケース非依存方式で行われる。
バージョン 4.1.0 以降では、255 より大きい M 値を指定すると、カラム型が TEXT 型に変換される。
NATIONAL CHAR(または、これに対応する短縮形式 NCHAR)は、SQL-99 における、CHAR カラムでデフォルトの CHARACTER セットを使用することを定義する方法。MySQL では、これはデフォルト。
CHAR は CHARACTER の省略形。
バージョン 4.1.0 以降では、latin1 キャラクタセットを CHAR カラムに割り当てる ASCII 属性を指定することができる。
バージョン 4.1.1 以降では、ucs2 キャラクタセットを CHAR カラムに割り当てる UNICODE 属性を指定することができる。
MySQL では、CHAR(0) 型のカラムを作成することができる。これは、主に、カラム自体は必要とするが、そのカラムの値を実際に使用することはない、というような古いアプリケーションに対応する必要があるときに役立つ。また、2 つの値しか取らないカラムが必要な場合にも非常に役立つ。 CHAR(0) は NOT NULL としては定義されず、1 ビットのみ占め、NULL または "" の 2 つの値しか取らない。
CHAR   CHAR(1) の別名
[NATIONAL] VARCHAR(M) [BINARY] 可変長文字列。注意: 後続のスペースは値の格納時に削除される(これは SQL-99 の仕様とは異なる)。M の範囲は 0 〜 255 文字(MySQL バージョン 4.0.2 では 1 〜 255)。 BINARY キーワードを指定しないと、VARCHAR 値のソートと比較は、ケース非依存方式で行われる
バージョン 4.1.0 以降では、255 より大きい M 値を指定すると、カラム型が TEXT 型に変換される。 これは互換性を考慮した機能。
VARCHAR は CHARACTER VARYING の省略形。
TINYBLOB   最大長が 255(2^8 - 1)文字の BLOB 型または TEXT 型のカラム
TINYTEXT   最大長が 255(2^8 - 1)文字の BLOB 型または TEXT 型のカラム
BLOB   最大長が 65535(2^16 - 1)文字の BLOB 型または TEXT 型のカラム
TEXT   最大長が 65535(2^16 - 1)文字の BLOB 型または TEXT 型のカラム
MEDIUMBLOB   最大長が 16777215(2^24 - 1)文字の BLOB 型または TEXT 型のカラム
MEDIUMTEXT   最大長が 16777215(2^24 - 1)文字の BLOB 型または TEXT 型のカラム
LONGBLOB   最大長が 4294967295 または 4G(2^32 - 1)バイトの BLOB 型または TEXT 型のカラム
MySQL バージョン 3.23 まで、サーバ/クライアントプロトコルおよび MyISAM テーブルでは、通信パケットまたはテーブルレコードごとに 16M の制約があった。バージョン 4.x 以降、LONGTEXT 型または LONGBLOB 型のカラムで許容される最大長は、クライアント/サーバプロトコル間の通信バッファおよび使用可能なメモリ量にしたがって調整された最大パケットサイズによって決まる。
LONGTEXT   LONGBLOBと同じ
ENUM('value1','value2',...)   列挙。値のリスト 'value1'、'value2'、...、NULL または特殊な "" エラー値から選択された、1 つの値のみ持つことができる文字列オブジェクト。ENUM には最大 65535 の重複のない値を組み込むことができる。
SET('value1','value2',...)   セット。0 個以上の値を持つことができる文字列オブジェクト。これらの値はいずれも値のリスト 'value1', 'value2', ... から選択する必要がある。1 つの SET には、最大 64 個の要素を組み込むことができる。

関連記事

スポンサーリンク

rm ファイルやディレクトリを削除する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る