支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


MySQL データ型

テーブルを作成する際、列(カラム)ごとに、テーブルに格納するデータ形式(数値、文字列、日時など)である「データ型」を予め指定します。列(カラム)には、指定したデータ型に沿ったデータしか保存できないため、フォーマットを統一されることが可能です。データ型を指定することで、保存されるデータが整理され、条件を指定して検索したり同じ体裁でデータを取得することができます。MySQLで使用できるデータ型には、「数値型(整数型、ビット値型、小数点型)」、「日付型・時間型」、「文字列型(文字列型、列挙型、バイナリ型))」「真偽値型」などがあります。

MySQL データ型 数値型

数値型は格納できる数値の範囲の異なったいくつかの種類があります。

   
  格納できる範囲 UNSIGNED範囲
TINYINT -128〜127 0〜255
SMALLINT -32768〜32767 0〜65535
MEDIUMINT -8388608〜83886070〜16777215
INT(INTEGER) -2147483648〜21474836470〜4294967295
BIGINT -9223372036854775808〜9223372036854775807 0〜18446744073709551615

MySQL データ型 BOOLEAN(BOOL)型

BOOLEAN(BOOL)は真偽値を格納します。

BOOLEAN(BOOL)

「true/false」、「1/0」を格納します。

MySQL データ型 数値型 ビット値型

ビット値型は数値方のひとつです。

BIT

「111」や「10000000」といったビットフィールド値を格納します。ビット値を指定するには、b'111' や b'10000000' のように指定します。格納する値のビット数を指定する場合、型の後にカッコをつけて数字(1〜64)を指定します。指定したビット数に満たない場合には「0(ゼロ)」で埋められます。


//例:ageカラムに3ビットの値を保存します。
 CREATE TABLE sample (age BIT(3));

MySQL データ型 数値型 小数点型

小数点型の桁数の指定方法は、「DECIMAL(M,D)」と指定します。「M」は合計桁数、Dは小数点以下の桁数を指します。DECIMAL(6,3)と指定すると、全体で6桁、小数点以下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

MySQL データ型 日付・時間型

日付や時間を扱うことのできる型はいくつかの種類があります。

DATE

日付
YYYY-MM-DD形式(例: '2020-01-01')

DATETIME

日付と時間
YYYY-MM-DD HH:MM:SS形式(例: '2020-01-01 12:15:03')

TIMESTAMP

タイムスタンプ
YYYY-MM-DD HH:MM:SS形式(例: '2020-01-01 12:15:03')
明示的に値が割り当てられていなければ、もっとも新しい変更日時に自動的に設定されます。

TIME

時間
HH:MM:SS形式、HHMMSS形式(例: '12:15:03')

YEAR


YYYY形式(例:2020年)
MySQLでは2桁の年形式はバージョン5.5.27の時点で廃止され4桁表示のみになりました。

MySQL データ型 文字列型

文字列型には「固定長」と「可変長」があります。固定長のデータ型は、テーブル定義時に文字数を設定し、データ領域を最初から確保します。一般的に検索時に効力を発揮するといわれています。可変長のデータ型は、文字数の上限内で任意の長さの文字列が扱えます。

CHAR(M)

固定長文字列
格納されるデータは、指定された長さになるように右側がスペースで埋められます。デフォルトの文字数は「1」で、格納できる文字数は0〜255文字まで設定できます。

VARCHAR(M)

可変長文字列
CHAR型とは異なり、文字数の長さはそのまま格納されます。格納できるバイト数は「0〜65,535」まで設定できます。

TINYTEXT

テキスト型(非バイナリオブジェクト)
格納できる最大長は255文字です。

TEXT

テキスト型(非バイナリオブジェクト)
格納できる最大長は 65,535文字です。

MEDIUMTEXT

テキスト型(非バイナリオブジェクト)
格納できる最大長は16,777,215 文字です。

LONGTEXT

テキスト型(非バイナリオブジェクト)
格納できる最大長は4,294,967,295文字または4Gバイト。

MySQL データ型 文字列型 バイナリ型

BINARY(M)

固定長バイナリバイト文字列
格納されるデータは、設定した文字数になるように調整されます。デフォルトの文字数は「1」で、格納できる文字数は0〜255文字まで設定できです。ソートや比較を行う際、ケース依存方式で行われます。

VARBINARY(M)

可変長バイナリバイト文字列
格納できるバイト数(0〜65,535)を設定できます。ソートや比較を行う際、ケース依存方式で行われます。

TINYBLOB

バイナリ・ラージ・オブジェクト
格納できる最大長は255バイトです。大量の文字データや、画像データ、音声データを格納するのに適しています。

BLOB

バイナリ・ラージ・オブジェクト
格納できる最大長は 65,535バイト。大量の文字データや、画像データ、音声データを格納するのに適しています。

MEDIUMBLOB

バイナリ・ラージ・オブジェクト
格納できる最大長は16,777,215バイト。大量の文字データや、画像データ、音声データを格納するのに適しています。

LONGBLOB

バイナリ・ラージ・オブジェクト
格納できる最大長は 4,294,967,295文字または 4G バイト。大量の文字データや、画像データ、音声データを格納するのに適しています。

MySQL データ型 文字列型 列挙型

ENUM

CHARをリストにしたもので、最大65535個の値を格納できます。指定した文字列リストの中の1つを格納します。
例:ENUM('value1','value2','value3') と型を指定した場合、「value1、value2、value3」のいずれかを格納します。フィールドに「1」を渡した場合、1番目の要素「value1」に変換され格納されます。無効な値を渡した場合には空文字が格納されます。

SET

ENUMはフィールド値を文字列として格納しますが、SETは2進数のビットとして格納します。最大64個の要素を格納できます。指定した文字列リストの中の複数を格納できます。表には要素値をそのまま代入することもできますが、10進数、2進数、インデックスでの代入も可能です。データは前から順に「2n(2のn乗)」のインデックス番号が付与されています。
例)SET('value1','value2','value3') と型を指定した場合、「value1、value2、value3」のいずれかを格納します。フィールドに「4」を渡した場合、2番目の要素「value2」に変換され格納されます。無効な値を渡した場合にはその値は無視されます。

MySQL データ型 オプション UNSIGNED

数値型には負の数と正の数を格納できますが、「UNSIGNED」オプションを付加することで、負の数が格納できなくなり、正の数の格納できる範囲が広がります。

例)
CREATE TABLE テーブル名 (カラム名 データ型 オプション);
CREATE TABLE sample (age INT UNSIGNED);
CREATE TABLE sample (age DECIMAL(6,3) UNSIGNED);

MySQL データ型 オプション ZEROFILL

「ZEROFILL」オプションを指定すると、自動的に「UNSIGNED」が追加され、設定された整数桁数に満たない場合に満たない桁を「0(ゼロ)」で埋めることで桁数を揃えます。

例)
CREATE TABLE テーブル名 (カラム名 データ型(表示桁数) オプション);
CREATE TABLE sample (
id INT(5) UNSIGNED ZEROFILL,
number DECIMAL(5,2) UNSIGNED ZEROFILL
);

+----------+-----------+
|  id         | number  |
+----------+-----------+
|  00001  |  001.23  |
|  00010  |  023.45  |
|  00100  |  034.50  |
+----------+-----------+

※表示桁数を設定した場合でも格納できる数値の範囲は変わりません。設定した桁数を超える場合には表示桁数を超えた桁数が表示されます。