テーブルのそれぞれのカラムごとに、保存したいデータのフォーマットに合わせて型を指定する必要があります。
ここでは、MySQLで使える主なデータ型の一覧を紹介していきます。
目次
数値型(整数型)
数値型の中でも整数を扱う型は以下の種類があり、格納できる数値の範囲に違いがあります。
格納できる範囲 | UNSIGNED をつけた場合の格納できる範囲 |
|
TINYINT |
-128 〜 127 | 0 〜 255 |
SMALLINT |
-32768 〜 32767 | 0 〜 65535 |
MEDIUMINT |
-8388608 〜 8388607 | 0 〜 16777215 |
INT 、INTEGER よく使う |
-2147483648 〜 2147483647 | 0 〜 4294967295 |
BIGINT |
-9223372036854775808 〜 9223372036854775807 | 0 〜 18446744073709551615 |
UNSIGNED の使い方
通常、整数型は負の数も格納することができますが、UNSIGNED
を指定すると正の数しか格納できなくなります。
その代わりに正の格納できる範囲が広くなります。
テーブル作成時、「age」カラムに UNSIGNED をつける例
CREATE TABLE users (age INT UNSIGNED);
ZEROFILL の使い方
整数の型に ZEROFILL
を指定すると、表示桁数に満たない値を 0
で埋めることができます。
また、ZEROFILL
を指定する場合は、自動的に UNSIGNED
が付加された状態になります。
テーブル作成時、「age」カラムに ZEROFILL をつける例
CREATE TABLE users (age INT ZEROFILL);
以下は ZEROFILL
を付加した「age」カラムに 123
の値を登録した例。表示桁数に合わせて 0
で埋められています。
表示桁数の指定方法
整数の型に表示桁数を指定するときは、型指定の際に後ろにカッコをつけて数字を指定します。
「age」カラムの表示桁数を5桁で INT型にするコマンド例
CREATE TABLE users (age INT(5));
表示桁数は格納できる数値の範囲ではありません。
指定した桁数以上の値を格納することもできます。また、その場合は表示桁数に関係なく値が表示されます。
数値型(BOOL、BOOLEAN)
数値型のひとつに BOOL(BOOLEAN)という型があります。使い方は以下。
BOOL 、BOOLEAN よく使う |
TINYINT(1) で指定した場合と同じ。true と false の2択を保存したいときに使うことが多い。 |
数値型(ビット値型)
数値型のひとつにビット値型があります。使い方は以下。
BIT |
111 や 10000000 といったビットフィールド値を格納するのに使う。ビット値を指定するには、b'111' や b'10000000' のように指定する。 |
ビット数の指定方法
ビット値型のカラムに保存する値のビット数を指定するときは、型指定の際に後ろにカッコをつけて数字(1〜64)を指定します。
「age」カラムに保存する値を3ビットにするコマンド例
CREATE TABLE users (age BIT(3));
指定したビット数に満たない値を格納した場合、左側はゼロで埋められます。
数値型(小数点型)
数値型のひとつに小数点型があります。使い方は以下。
DECIMAL 、DEC 、NUMERIC よく使う |
誤差のない正確な小数を格納できる。 |
FLOAT |
おおよそ小数第7位まで正確な小数を格納できる。
許可される値は、-3.402823466×1038 〜 -1.175494351×1038、0、1.175494351×1038 〜 3.402823466×1038。 |
DOUBLE |
おおよそ小数第15位まで正確な小数を格納できる。
許可される値は、-1.7976931348623157×10308 〜 -2.2250738585072014×10308、0、2.2250738585072014×10308 〜 1.7976931348623157×10308。 |
桁数の指定方法
小数点型は、DECIMAL(M, D)
のようにして桁数を指定することができます。
M
– 桁数の合計D
– 小数点以下の桁数
例えば DECIMAL(5, 2)
のように指定すると、全体で5桁、小数点以下が2桁(123.45
など)の数値が保存できるようになります。
UNSIGNED の使い方
通常、小数点型は負の数も格納することができますが、UNSIGNED
を指定すると正の数しか格納できなくなります。
テーブル作成時、「age」カラムに UNSIGNED をつける例
CREATE TABLE users (age DECIMAL(5,3) UNSIGNED);
ZEROFILL の使い方
小数点型に ZEROFILL
を指定すると、表示桁数に満たない値を 0
で埋めることができます。
また、ZEROFILL
を指定する場合は、自動的に UNSIGNED
が付加された状態になります。
テーブル作成時、「age」カラムに ZEROFILL をつける例
CREATE TABLE users (age DECIMAL(5,3) ZEROFILL);
以下は ZEROFILL を付加した「age」カラムに 1.23
の値を登録した例。表示桁数に合わせて 0
で埋められています。
日付型・時間型
日付や時間を扱う型は以下の種類があり、それぞれ用途が違います。
型 | 用途 | フォーマット |
DATE よく使う |
日付 | '年-月-日'
(例: |
DATETIME よく使う |
日付と時間 | '年-月-日 時:分:秒'
(例: |
TIMESTAMP よく使う |
タイムスタンプ
明示的に値が割り当てられていなければ、もっとも新しい変更日時に自動的に設定される。 |
'年-月-日 時:分:秒'
(例: |
TIME |
時間 | '時:分:秒'
(例: |
YEAR |
年 | 年
(例: |
値の指定方法
日付や時間を扱う型のカラムに値を挿入する場合、以下のような基本フォーマット以外の形も使えます。
'2020-01-01 12:15:05'
(基本)'20-1-1 12:15:5'
'2020/01/01 12:15:05'
'20200101121505'
文字列型
文字列を扱う型は以下の種類があり、それぞれ用途が違います。
CHAR |
固定長文字列を格納。
格納されるデータは、指定された長さになるように右側がスペースで埋められる。
|
VARCHAR よく使う |
可変長文字列を格納。
CHAR型とは違い、右側にスペースはつかない。
|
BINARY |
固定長バイナリバイト文字列を格納。
格納されるデータは、指定された長さになるように調整される。
|
VARBINARY |
可変長バイナリバイト文字列を格納。
|
TINYBLOB |
バイナリデータを格納。
最大長は 255 (28 − 1) バイト。 |
BLOB |
バイナリデータを格納。
最大長は 65,535 (216 − 1) バイト。
|
MEDIUMBLOB |
バイナリデータを格納。
最大長は 16,777,215 (224 − 1) バイト。 |
LONGBLOB |
バイナリデータを格納。
最大長は 4,294,967,295 または 4G バイト (232 − 1) バイト。 |
TINYTEXT |
文字列を格納。
最大長は 255 (28 − 1) 文字。 |
TEXT よく使う |
文字列を格納。
最大長は 65,535 (216 − 1) 文字。
|
MEDIUMTEXT |
文字列を格納。
最大長は 16,777,215 (224 − 1) 文字。 |
LONGTEXT |
文字列を格納。
最大長は 4,294,967,295 または 4G バイト (232 − 1) 文字。 |
ENUM |
指定した文字列リストの中の1つを格納できる。
例えば、 |
SET |
指定した文字列リストの中の複数を格納できる。
例えば、 |
まとめ
以上、MySQLで使えるデータ型一覧でした!
ここまでの内容をまとめておきます。
- データ型の種類は、数値型(整数型、BOOL・BOOLEAN、ビット値型、小数点型)、日付型・時間型、文字列型がある。
- 保存したいデータのフォーマットに合わせて型を指定する。