文字列データタイプの要約が次に紹介されています。追加情報については 項10.4. 「文字列タイプ」 を参照してください。必要とする記憶容量は 項10.5. 「データタイプが必要とする記憶容量」 に紹介されています。
MySQLは時々、文字列カラムを CREATE
TABLE
や ALTER TABLE
ステートメントで与えられているタイプとは違う物に変更する事があります。項12.1.8.1. 「サイレント カラム仕様変更」を参照してください。
MySQL 4.1以降の中には、MySQL4.1以前のバージョンには無かった文字列データタイプの特徴が含まれます。
MySQLは、文字単位の中の文字カラム定義の長さ仕様を解明します。(MySQL
4.1以前は、カラム長さはバイトで解釈されていました。)これは、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
という名前のカラムを作成します。
CHARSET
は CHARACTER
SET
の同義語です。
ASCII
属性は CHARACTER
SET latin1
の省略表現です。
UNICODE
属性は CHARACTER
SET ucs2
の省略表現です。
BINARY
属性は、カラム文字セットのバイナリ照合を指定する省略表現です。この場合、ソートと比較は数値文字値に基づきます。(MySQL
4.1以前のバージョンでは、BINARY
はカラムにバイナリ文字列を格納させ、ソートと比較は数値バイト値に基づいていました。これは1バイト文字セットに文字値を使用するのと同じですが、複数バイト文字セットに使用するのとは違います。)
文字カラムのソートと比較は、カラムに割り当てられた文字セットに基づいています。(MySQL
4.1バージョン以前は、ソートと比較はサーバー文字セットの照合に基づいていました。)CHAR
、VARCHAR
、TEXT
、ENUM
、そして
SET
データタイプに対して、語彙の順番ではなく基礎となる文字コード値を利用する為に、バイナリ照合を持つカラムか、ソートと比較を行う
BINARY
属性を宣言する事ができます。
章 9. キャラクタセットサポートMySQLの中での文字セットの使用についての追加情報を紹介しています。
[NATIONAL] CHAR(
M
)
[CHARACTER SET charset_name
]
[COLLATE
collation_name
]
格納時に必ずスペースを使って指定された長さに詰められる固定長文字列。M
はカラム長さを表します。M
の範囲は、0から255文字です。
注:CHAR
値が検索された時、後続スペースは削除されます。
CHAR
の長さを255以上に設定しようとすると、CREATE
TABLE
か ALTER TABLE
ステートメントが実行されたテーブル内でエラーが発生し、その作業は失敗します。
mysql>CREATE TABLE c1 (col1 INT, col2 CHAR(500));
ERROR 1074 (42000): Column length too big for column 'col' (max = 255); use BLOB or TEXT instead mysql>SHOW CREATE TABLE c1;
ERROR 1146 (42S02): Table 'test.c1' doesn't exist
CHAR
は CHARACTER
の省略表現です。NATIONAL CHAR
(またはそれと同等である NCHAR
)
は、CHAR
カラムが定義済文字セットを使用しなければいけないという事を定義する為の標準のSQLの方法です。MySQL
4.1以降のバージョンでは、この定義済文字セットとして
utf8
を利用します。
項9.3.6. 「各国キャラクタセット」.
CHAR BYTE
データタイプは
BINARY
データタイプの別名です。これは互換性の特徴です。
MySQLで CHAR(0)
タイプのカラムを作成する事ができます。これは主に、カラムの存在に頼っていても、その値は実際には使用しない古いアプリケーションに対応する必要がある時に便利な物です。CHAR(0)
はまた、二つの値だけを取り込む事ができるカラムが必要な時にも大変便利です。CHAR(0)
NULL
として定義されたカラムは1ビットだけ使用し、NULL
と ''
(空の文字列)値だけを取り込む事ができます。
CHAR [CHARACTER SET
charset_name
] [COLLATE
collation_name
]
このタイプは CHAR(1)
の同義語です。
[NATIONAL] VARCHAR(
M
)
[CHARACTER SET charset_name
]
[COLLATE
collation_name
]
可変長文字列です。M
はカラムの最大長さを表します。M
の範囲は0から65,535です。(VARCHAR
の実際の最大長さは使用する最大行サイズと文字セットによって決まります。最大有効カラム長さは65,532バイトの行サイズによります。)
注:MySQL 5.1
は、標準SQL仕様に従うので、VARCHAR
値から後続スペースを削除しません。
VARCHAR
は CHARACTER
VARYING
の省略表現です。
VARCHAR
は1バイト、または2バイトの長さのプリフィックスに加え、データと共に格納されています。VARCHAR
カラムが255以上の長さであればプリフィックスの長さは2バイトです。
BINARY
タイプは
CHAR
タイプと似ていますが、非バイナリ文字の文字列ではなく、バイナリバイト文字列を格納します。
VARBINARY
タイプはVARCHAR
タイプと似ていますが、非バイナリ文字の文字列ではなく、バイナリバイト文字列を格納します。
最長255 (28 – 1)
バイトの BLOB
カラムです。
TINYTEXT [CHARACTER SET
charset_name
] [COLLATE
collation_name
]
最長255 (28 – 1)
文字の TEXT
カラムです。
最長65,535 (216 – 1)
バイトの BLOB
カラムです。
長さ M
を任意で利用する事もできます。もしこれを実行すると、MySQLは
M
バイトの長さの値を保持するのに十分な最小
BLOB
を作成します。
TEXT[(
M
)] [CHARACTER SET
charset_name
] [COLLATE
collation_name
]
最長65,535 (216 – 1)
文字の TEXT
カラムです。
長さ M
を任意で利用する事もできます。もしこれを実行すると、MySQLは
M
文字の長さの値を保持するのに十分な最小
TEXT
タイプを作成します。
最長16,777,215 (224 – 1)
バイトの BLOB
カラムです。
MEDIUMTEXT [CHARACTER SET
charset_name
] [COLLATE
collation_name
]
最長16,777,215 (224 – 1)
文字の TEXT
カラムです。
最長4,294,967,295、または4GB
(232 – 1) バイトの
BLOB
カラムです。LONGBLOB
カラムの有効な(許可されている)最長長さは、クライアント/サーバープロトコルと使用可能メモリの中に組み込まれている最大パケットサイズにより決まります。
LONGTEXT [CHARACTER SET
charset_name
] [COLLATE
collation_name
]
最長4,294,967,295、または4GB
(232 – 1) バイトの
TEXT
カラムです。LONGTEXT
カラムの有効な(許可されている)最長長さは、クライアント/サーバープロトコルと使用可能メモリの中に組み込まれている最大パケットサイズにより決まります。
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
'...
値のリストから選択されなければいけない、ゼロ、またはそれ以上の値を持つ事ができる文字列オブジェクトです。SET
カラムは最高64メンバを持つ事ができます。SET
値は、内部的には整数として表されます。