SYSTEM238 / NOTES1 / データベース / MySQLのデータ型

NOTES1 PROG1
MySQLのデータ型
MySQLのデータ型をまとめたノート。対象バージョンはMySQL5.1.xです。

対象バージョンはMySQL5.1.xです。

主なデータ型だけ記述してます。
(個人的に)あまり使わない列挙型やバイナリ型などは省略しています。

数値型

最小値 最大値 サイズ
TINYINT -128 127 1Byte
TINYINT UNSIGNED 0 255 1Byte
SMALLINT -32768 32767 2Byte
SMALLINT UNSIGNED 0 65535 2Byte
MEDIUMINT -8388608 8388607 3Byte
MEDIUMINT UNSIGNED 0 16777215 3Byte
INT -2147483648 2147483647 4Byte
INT UNSIGNED 0 4294967295 4Byte
BIGINT -9223372036854775808 9223372036854775807 8Byte
BIGINT UNSIGNED 0 18446744073709551615 8Byte
FLOAT(precision,scale) *1 -3.402823466E+38 3.402823466E+38 4Byte
DOUBLE(precision,scale) *1
REAL(precision,scale)
-1.7976931348623157E+308 1.7976931348623157E+308 8Byte
DECIMAL(precision[,scale]) *1 *2 DEC(precision[,scale]) NUMERIC(precision[,scale]) -- -- *3

*1 precision:精度、scale位取り 例)1234.56 → 精度6、位取り2
*2 scale省略時は0
*3 scale > 0 の場合はprecision + 2Byte、scale = 0 の場合はprecision + 1Byte

文字列型

説明
CHAR(n)
CHARACTER(n)
固定長文字列
最大255文字まで
格納される文字が指定サイズより小さい場合は右側スがペース埋めされる
CHAR CHAR(1)と等価
VARCHAR(n) 可変長文字列
最大65535Byte (64KB)
TINYTEXT *1 可変長文字列
最大255Byte
TEXT *1 可変長文字列
最大65535Byte (64KB)
MEDIUMTEXT *1 可変長文字列
最大16777215Byte (16MB)
LONGTEXT *1 可変長文字列
最大4294967295Byte (4GB)

*1 TEXT型にインデックスを設定する場合は長さの指定が必要になる。

CREATE TABLE fuga_tbl (uho_col TEXT);
CREATE INDEX hoge_idx ON fuga_tbl (uho_col(10));

日付/時刻型

属性 説明 サイズ
DATE 日付 範囲:
 '1000-01-01' ~ '9999-12-31'
入力形式:
 'YYYY-MM-DD', 'YY-MM-DD', 'YYYYMMDD', 'YYMMDD' *1
3Byte
DATETIME 日時 範囲:
 '1000-01-01 00:00:00' ~ '9999-12-31 23:59:59'
入力形式:
 'YYYY-MM-DD HH:MM:SS', 'YY-MM-DD HH:MM:SS',
 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS' *1
8Byte
TIMESTAMP *2 日時 範囲:
 '1970-01-01 00:00:00' ~ '2037-12-31 23:59:59'
入力形式:
 DATETIMEと同じ
4Byte
TIME 時刻 範囲:
 '-838:59:59' ~ '838:59:59'
入力形式:
 'HH:MM:SS', 'HHMMSS', 'HH:MM', 'HHMM',
 'D HH:MM:SS', 'D HHMMSS', 'D HH:MM', 'D HHMM',
 (は日付 0 〜 33)
3Byte
YEAR[(4 | 2)] 範囲:
 '1901' ~ '2155'(4桁形式), '1970' ~ '2069'(2桁形式)
入力形式:
 'YYYY'(4桁形式), 'YY'(2桁形式)
1Byte

*1 '-'は'/'でもオッケー。
*2 テーブルの最初のTIMESTAMP型カラムには"CURRENT TIMESTAMP ON UPDATE CURRENT TIMESTAMP"が設定されてしまうので注意!!

ビット型

説明
BIT(n) n bitの固定長bit列 nは1〜64
BIT BIT(1)と等価
BOOL TINYINT(1)と等価
BOOLEAN TINYINT(1)と等価

参考

MySQL全機能バイブル ~現場で役立つAtoZ~

表紙に「リファレンスマニュアルの完全版」と書いていますが、まさしくその通り。開発や運用で必要な事はたいてい書いています。

MySQLのリファレンス本はこの本を入手しておけば間違いないと思います。お薦めです!!