【保存版】MySQLで使える主なデータ型 一覧

テーブルのそれぞれのカラムごとに、保存したいデータのフォーマットに合わせて型を指定する必要があります。

ここでは、MySQLで使える主なデータ型の一覧を紹介していきます。

 

数値型(整数型)

数値型の中でも整数を扱う型は以下の種類があり、格納できる数値の範囲に違いがあります。

格納できる範囲 UNSIGNED をつけた場合の格納できる範囲
TINYINT -128 〜 127 0 〜 255
SMALLINT -32768 〜 32767 0 〜 65535
MEDIUMINT -8388608 〜 8388607 0 〜 16777215
INTINTEGER よく使う -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)という型があります。使い方は以下。

BOOLBOOLEAN よく使う TINYINT(1) で指定した場合と同じ。truefalse の2択を保存したいときに使うことが多い。

 

数値型(ビット値型)

数値型のひとつにビット値型があります。使い方は以下。

BIT 11110000000 といったビットフィールド値を格納するのに使う。ビット値を指定するには、b'111'b'10000000' のように指定する。

 

ビット数の指定方法

ビット値型のカラムに保存する値のビット数を指定するときは、型指定の際に後ろにカッコをつけて数字(1〜64)を指定します。

「age」カラムに保存する値を3ビットにするコマンド例

CREATE TABLE users (age BIT(3));
メモ

指定したビット数に満たない値を格納した場合、左側はゼロで埋められます。

 

数値型(小数点型)

数値型のひとつに小数点型があります。使い方は以下。

DECIMALDECNUMERIC よく使う 誤差のない正確な小数を格納できる。
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 よく使う 日付 '年-月-日'

(例: '2020-01-01'

DATETIME よく使う 日付と時間 '年-月-日 時:分:秒'

(例: '2020-01-01 12:15:03'

TIMESTAMP よく使う タイムスタンプ

明示的に値が割り当てられていなければ、もっとも新しい変更日時に自動的に設定される。

'年-月-日 時:分:秒'

(例: '2020-01-01 12:15:03'

TIME 時間 '時:分:秒'

(例: '12:15:03'

YEAR

(例: 2020

 

値の指定方法

日付や時間を扱う型のカラムに値を挿入する場合、以下のような基本フォーマット以外の形も使えます。

  • '2020-01-01 12:15:05' (基本)
  • '20-1-1 12:15:5'
  • '2020/01/01 12:15:05'
  • '20200101121505'

 

文字列型

文字列を扱う型は以下の種類があり、それぞれ用途が違います。

CHAR 固定長文字列を格納。

格納されるデータは、指定された長さになるように右側がスペースで埋められる。

CHAR(10) のようにして格納できる文字数(0〜255・デフォルトは1)を指定できる。

VARCHAR よく使う 可変長文字列を格納。

CHAR型とは違い、右側にスペースはつかない。

VARCHAR(10) のようにして格納できるバイト数(0〜65,535)を指定できる。

BINARY 固定長バイナリバイト文字列を格納。

格納されるデータは、指定された長さになるように調整される。

BINARY(10) のようにして格納できる文字数(0〜255・デフォルトは1)を指定できる。

VARBINARY 可変長バイナリバイト文字列を格納。

VARBINARY(10) のようにして格納できるバイト数(0〜65,535)を指定できる。

TINYBLOB バイナリデータを格納。

最大長は 255 (28 − 1) バイト。

BLOB バイナリデータを格納。

最大長は 65,535 (216 − 1) バイト。

BLOB(10) のようにして格納できるバイト数を指定できる。

MEDIUMBLOB バイナリデータを格納。

最大長は 16,777,215 (224 − 1) バイト。

LONGBLOB バイナリデータを格納。

最大長は 4,294,967,295 または 4G バイト (232 − 1) バイト。

TINYTEXT 文字列を格納。

最大長は 255 (28 − 1) 文字。

TEXT よく使う 文字列を格納。

最大長は 65,535 (216 − 1) 文字。

TEXT(10) のようにして格納できる文字数を指定できる。

MEDIUMTEXT 文字列を格納。

最大長は 16,777,215 (224 − 1) 文字。

LONGTEXT 文字列を格納。

最大長は 4,294,967,295 または 4G バイト (232 − 1) 文字。

ENUM 指定した文字列リストの中の1つを格納できる。

例えば、ENUM('value1','value2','value3') と型を指定した場合、「value1」、「value2」、「value3」、または NULL のいずれかを格納することができる。

SET 指定した文字列リストの中の複数を格納できる。

例えば、ENUM('value1','value2','value3') と型を指定した場合、「value1」、「value2」、「value3」の中からゼロ個以上の複数の値を格納できる(複数の値を格納する場合はカンマ(,)区切りで指定する)。

 

まとめ

以上、MySQLで使えるデータ型一覧でした!

 

ここまでの内容をまとめておきます。

  • データ型の種類は、数値型(整数型、BOOL・BOOLEAN、ビット値型、小数点型)、日付型・時間型、文字列型がある。
  • 保存したいデータのフォーマットに合わせて型を指定する。

 

MySQL入門メニュー