文字列データ型の要約が次に紹介されています。文字列型の特性の詳細は、項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
値は、内部的には整数として表されます。