[+/-]
MySQL では、複数のカラム型をサポートしています。これらのカラム型は、数値型、日付と時刻型、文字列(文字)型の 3 つのカテゴリに分類することができます。このセクションでは、まず、使用できるカラム型の概要を示し、各カラム型で必要となる記憶容量について簡単に説明します。その後、各カテゴリのカラム型の特性を詳しく説明します。 概要はあえて簡単にまとめてあります。値の有効な指定形式など、個々のカラム型の追加情報については、それぞれの詳細な説明を参照してください。
以下に、MySQL でサポートしているカラム型を示します。 説明内では、次のコード文字を使用します。
M
最大表示サイズを表す。正式な最大表示サイズは 255。
D
小数点型に適用され、小数点以下の桁数を表す。最大値は
30 だが、M
-2
より大きくしないようにする。
角かっこ(‘[
’ と
‘]
’)は、オプションの型指定子の一部であることを表します。
カラムに対して ZEROFILL
を指定すると、そのカラムに
UNSIGNED
属性が自動で追加されることに注意してください。
警告:
整数値の減算で、どちらか一方の整数値が
UNSIGNED
型の場合、結果の値は符号なしになります。 See
項6.3.5. 「キャスト関数」。
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
非常に小さな整数。符号付きの範囲は
-128
〜
127
。符号なしの範囲は
0
〜 255
。
BIT
, BOOL
,
BOOLEAN
いずれも TINYINT(1)
のシノニム。
シノニム BOOLEAN
はバージョン
4.1.0 で追加された。
ブール型の完全な処理は SQL-99 に基づいて導入される。
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
小さな整数。符号付きの範囲は
-32768
〜
32767
。符号なしの範囲は
0
〜 65535
。
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
中間サイズの整数。符号付きの範囲は
-8388608
〜
8388607
。符号なしの範囲は
0
〜 16777215
。
INT[(M)] [UNSIGNED] [ZEROFILL]
通常サイズの整数。符号付きの範囲は
-2147483648
〜
2147483647
。符号なしの範囲は
0
〜 4294967295
。
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
INT
のシノニム。
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
大きい整数。符号付きの範囲は
-9223372036854775808
〜
9223372036854775807
。符号なしの範囲は
0
〜
18446744073709551615
。
BIGINT
型のカラムに関しては、次の点について注意すること。
すべての算術演算は符号付き
BIGINT
または
DOUBLE
型の値を使って行われる。そのため、9223372036854775807
(63
ビット)を超える、符号なしの大きい整数は、ビット関数以外では使用しないようにする。ビット関数以外でこのような大きい整数を使用すると、BIGINT
から DOUBLE
への変換時に発生する丸め誤差の影響で、結果の最後の桁の一部に誤りが出る場合がある。
次の場合、SQL 4.0 では BIGINT
を処理できる。
整数を使って、符号なしの大きい値を
BIGINT
カラムに格納する場合
MIN(big_int_column)
および
MAX(big_int_column)
において
演算子(+
、-
、*
など)の使用時に両方のオペランドが整数の場合
文字列として格納すれば、正確な整数値を
BIGINT
カラムに常に格納することができる。この場合、倍精度表現を介在しない、文字列から数値への変換が実行される。
‘-
’、‘+
’、および
‘*
’
で両方の引数が整数値のときは、BIGINT
演算が使用される。したがって、2
つの大きな整数(または整数を返す関数の結果)を掛け算する場合、結果が
9223372036854775807
より大きいと、予期しない結果が返される場合がある。
FLOAT(precision) [UNSIGNED] [ZEROFILL]
浮動小数点数。precision
は、単精度浮動小数点数の場合は
<=24
で、倍精度浮動小数点数の場合は 25 〜 53
の間。これらの型はこのすぐ後に説明する
FLOAT
型と DOUBLE
型に類似している。 FLOAT(X)
は対応する FLOAT
型および
DOUBLE
型と範囲は同じだが、表示サイズと小数部桁数は定義されない。
MySQL バージョン 3.23
では、これは真の浮動小数点値。それ以前の
MySQL
バージョンでは、FLOAT(precision)
の小数部は常に 2 桁になる。
MySQL
の計算はすべて倍精度で行われるため、FLOAT
の使用時には予期しない問題が発生する場合があることに注意する。
See 項A.5.6. 「不整合レコードの問題解決」。
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
単精度浮動小数点数。使用可能な値は
-3.402823466E+38
〜
-1.175494351E-38
、0
、および
1.175494351E-38
〜
3.402823466E+38
。UNSIGNED
を指定した場合、負数は使用できない。M
は表示幅で、D
は小数部桁数。引数のない FLOAT
や、X
が 24 以下の
FLOAT(X)
は、単精度浮動小数点数を表す。
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
倍精度浮動小数点数。 使用可能な値は
-1.7976931348623157E+308
〜
-2.2250738585072014E-308
、0
、および
2.2250738585072014E-308
〜
1.7976931348623157E+308
。UNSIGNED
を指定した場合、負数は使用できない。M
は表示幅で、D
は小数部桁数。引数のない DOUBLE
や、X
が 25 以上 53 以下である
FLOAT(X)
は、倍精度浮動小数点数を表す。
DOUBLE PRECISION[(M,D)] [UNSIGNED]
[ZEROFILL]
, REAL[(M,D)] [UNSIGNED]
[ZEROFILL]
いずれも DOUBLE
のシノニム。
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
アンパック浮動小数点数。CHAR
カラムのように動作する。``アンパック''
とは、その数値が、各桁に 1
文字ずつ使用して文字列として格納されることを意味する。M
では、小数点と、負数に使用される
‘-
’
記号はカウントされない(しかし、これらのためのスペースは確保される)。D
が 0
の場合、値は小数点も小数部も持たない。DECIMAL
値の最大範囲は、DOUBLE
と同じだが、個々の DECIMAL
カラムの実際の範囲は、M
と
D
の値によって制限される。UNSIGNED
を指定した場合、負数は使用できない。
D
を省略した場合、デフォルトは
0。M
を省略した場合、デフォルトは 10。
MySQL バージョン 3.23
より前のバージョンでは、M
引数に、符号と小数点に必要なスペースを含める必要がある。
DEC[(M[,D])] [UNSIGNED] [ZEROFILL]
,
NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]
,
FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]
いずれも DECIMAL
のシノニム。
FIXED
エイリアスは、他のサーバとの互換性を確保する目的で、バージョン
4.1.0 で追加された。
日付。サポートしている範囲は、'1000-01-01'
〜 '9999-12-31'
。MySQL
では、DATE
値は
'YYYY-MM-DD'
形式で表示されるが、DATE
カラムへの値の割り当てには文字列または数値のいずれかを使用することができる。
See 項6.2.2.2. 「DATETIME
、DATE
、TIMESTAMP
型」。
日付と時刻の組み合わせ。サポートしている範囲は、'1000-01-01
00:00:00'
〜 '9999-12-31
23:59:59'
。MySQL
では、DATETIME
値は
'YYYY-MM-DD HH:MM:SS'
形式で表示されるが、DATETIME
カラムへの値の割り当てには文字列または数値のいずれかを使用することができる。
TIMESTAMP[(M)]
タイムスタンプ。範囲は '1970-01-01
00:00:00'
〜 2037
年の一定の時点。
MySQL 4.0
以前のバージョンでは、TIMESTAMP
値は、M
が
14
(または指定なし)、12
、8
、または
6
のどれであるかに応じて、YYYYMMDDHHMMSS
、YYMMDDHHMMSS
、YYYYMMDD
、または
YYMMDD
形式で表示されるが、TIMESTAMP
カラムへの値の割り当てには文字列または数値のいずれかを使用することができる。
MySQL 4.1 以降では、TIMESTAMP
は
'YYYY-MM-DD HH:MM:SS'
形式の文字列として返される。数値として返されるようにするには、タイムスタンプカラムに
+0
を追加する。異なるタイムスタンプ長はサポートしていない。バージョン
4.0.12 以降、--new
オプションを使用することで、バージョン 4.1
と同じようにサーバを動作させることができる。
TIMESTAMP
カラムに値を指定しないと、最後に行われた操作の日付と時刻が自動的に設定されるため、このカラムは
INSERT
操作や UPDATE
操作の日付と時刻を記録するのに役立つ。また、このカラムに
NULL
値を割り当てることによって、現在の日付と時刻をカラムに設定することができる。
See 項6.2.2. 「日付と時刻型」。
M
引数は、TIMESTAMP
カラムの表示方法にのみ作用する。
この値は常に 4 バイトで格納される。
M
が 8 または 14 の
TIMESTAMP(M)
カラムは数値として報告され、その他の
TIMESTAMP(M)
カラムは文字列として報告されることに注意する。これは単に、これらのデータ型のテーブルのダンプとリストアを確実に実行できるようにすることを目的としている。
See 項6.2.2.2. 「DATETIME
、DATE
、TIMESTAMP
型」。
TIME
時刻。範囲は '-838:59:59'
〜
'838:59:59'
。 MySQL
では、TIME
値は
'HH:MM:SS'
形式で表示されるが、TIME
カラムへの値の割り当てには文字列または数値のいずれかを使用することができる。
See 項6.2.2.3. 「TIME
型」。
YEAR[(2|4)]
2 桁または 4 桁の形式の年(デフォルトは 4
桁)。使用可能な値は、4 桁形式では
1901
〜 2155
と
0000
、2 桁形式では 1970 〜 2069(70
〜 69)。MySQL では、YEAR
値は
YYYY
形式で表示されるが、YEAR
カラムへの値の割り当てには文字列または数値のいずれかを使用することができる(YEAR
型は MySQL バージョン 3.22
より前のバージョンでは使用できない)。 See
項6.2.2.4. 「YEAR
型」。
[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 つの値しか取らない。 See
項6.2.3.1. 「CHAR
型と VARCHAR
型」。
CHAR
CHAR(1)
のシノニム。
[NATIONAL] VARCHAR(M) [BINARY]
可変長文字列。注意:
後続のスペースは値の格納時に削除される(これは
SQL-99 の仕様とは異なる)。M
の範囲は 0 〜 255 文字(MySQL バージョン 4.0.2
では 1 〜 255)。 BINARY
キーワードを指定しないと、VARCHAR
値のソートと比較は、ケース非依存方式で行われる。
See 項6.5.3.1. 「カラムの暗黙的な変更」。
バージョン 4.1.0 以降では、255 より大きい
M
値を指定すると、カラム型が
TEXT
型に変換される。
これは互換性を考慮した機能。
VARCHAR
は CHARACTER
VARYING
の省略形。
TINYBLOB
, TINYTEXT
最大長が 255(2^8 - 1)文字の BLOB
型または TEXT
型のカラム。 See
項6.5.3.1. 「カラムの暗黙的な変更」。 See
項6.2.3.2. 「BLOB
型と TEXT
型」。
BLOB
, TEXT
最大長が 65535(2^16 - 1)文字の
BLOB
型または TEXT
型のカラム。 See
項6.5.3.1. 「カラムの暗黙的な変更」。 See
項6.2.3.2. 「BLOB
型と TEXT
型」。
MEDIUMBLOB
, MEDIUMTEXT
最大長が 16777215(2^24 - 1)文字の
BLOB
型または TEXT
型のカラム。 See
項6.5.3.1. 「カラムの暗黙的な変更」。 See
項6.2.3.2. 「BLOB
型と TEXT
型」。
LONGBLOB
, LONGTEXT
最大長が 4294967295 または 4G(2^32 - 1)バイトの
BLOB
型または TEXT
型のカラム。 See
項6.5.3.1. 「カラムの暗黙的な変更」。 MySQL
バージョン 3.23
まで、サーバ/クライアントプロトコルおよび
MyISAM
テーブルでは、通信パケットまたはテーブルレコードごとに
16M の制約があった。バージョン 4.x
以降、LONGTEXT
型または
LONGBLOB
型のカラムで許容される最大長は、クライアント/サーバプロトコル間の通信バッファおよび使用可能なメモリ量にしたがって調整された最大パケットサイズによって決まる。
See 項6.2.3.2. 「BLOB
型と TEXT
型」。
ENUM('value1','value2',...)
列挙。値のリスト
'value1'
、'value2'
、...
、NULL
または特殊な ""
エラー値から選択された、1
つの値のみ持つことができる文字列オブジェクト。ENUM
には最大 65535
の重複のない値を組み込むことができる。 See
項6.2.3.3. 「ENUM
型」。
SET('value1','value2',...)
セット。0
個以上の値を持つことができる文字列オブジェクト。これらの値はいずれも値のリスト
'value1'
, 'value2'
,
...
から選択する必要がある。1
つの SET
には、最大 64
個の要素を組み込むことができる。 See
項6.2.3.4. 「SET
型」。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.