データベース

【MySQL】よく使うデータ型をまとめて紹介(テーブル設計)

MySQLでテーブルを作成する際、カラムの名前とそのカラムに保存したいデータの型を合わせて設定します。

データ型の設定ができていないと思わぬところでエラーが発生したり、正常にデータが保存されなかったりする可能性があります。

名無し君
名無し君
データ型には様々な種類があります。保存したいデータによって使い分けが必要です。

この記事では「よく使うデータ型」についてまとめて紹介しています。ぜひ最後まで読んでみてください。

データ型とは

テーブルのカラムにどのようなデータを格納するかを指定するものです。

データ型には「整数型」「文字列型」「日付型」などいくつかの種類があり、それぞれのカラムごとに、あらかじめ1つずつ設定しておく必要があります。

このカラムには指定したデータ型に沿ったデータしか保存できません。

こうすることで、誤ったデータ型の入力を防止することや必要な最小限のデータ型を選定する事で余計な容量を取らないこと等、データ格納や管理を効率的に行うことが可能となります。

データ型を設定するタイミング

データ型はテーブルの作成時に設定を行います。

MySQLでは「CREATE TABLE文」を使ってテーブルを作成します。データ型を設定するのは、下図のようにカラム名を記述した後になります。

CREATE TABLE sample (id INT, date DATE, name TEXT, member BOOL);

青文字部分がデータ型です。

上記の例では、「id」カラムにINT型(数値型)、「date」カラムにDATE型(日付型)、「name」カラムにTEXT型(文字列型)、「member」カラムにBOOL型(BOOLEAN型)というsampleテーブルを作成しています。

MySQLでよく使うデータ型

数値型(数値型)

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

データ型数値の範囲UNSIGNED
INT,INTEGER
(使用頻度高)
整数型(4バイト)-2147483648
〜 2147483647
0 ~ 4294967295
TYNYINT整数型(1バイト)-128
~ 127
0 ~ 255
SMALLINT整数型(2バイト)-32768
~ 32767
0 ~ 65536
MEDIUMINT整数型(3バイト)8388608
~ 8388607
0 ~ 16777215
BIGINT正数型(8バイト)-9223372036854775808
~ 9223372036854775807
0 ~  18446744073709551615

使い方:CREATE TABLE sample (id INT);

INT,INTEGERは数値の範囲、格納サイズおよび性能において最も釣り合いが取れていることから一般的に使用されています。

TYNYINTやSMALLINTは通常はディスク容量に制限が付いている場合にも使用することが多いです。

UNSIGNEDについて

通常、数値型は正負の符号を持たせることができます。

「UNSIGNED」オプションを付けると符号を禁止にすることができます。

負の数が使用できない代わりに、正の数で扱える数値の範囲が2倍まで広くなります。

CREATE TABLE sample (id INT UNSIGNED);

上記の例のようにデータ型の後ろにオプションを付けます。

ZEROFILLについて

「ZEROFILL」オプションを付けると表示桁数に満たない数値の場合は、「0」を自動で左詰めします。

例えば、データ型に「TYNYINT」を設定したカラムに「78」を入力すると、「078」で登録されます。

名無し君
名無し君
ZEROFILLは負の数を使用することはできません。

CREATE TABLE sample (id INT ZEROFILL);

 

数値型(浮動小数点型)

整数ではなく小数点を登録したい場合は、以下のデータ型を使用します。

データ型数値の範囲
DECIMAL
(使用頻度高)
10進数小数型1-10E+38
 ~ -1+10E+38
FLOAT単精度浮動小数点型3.402823466E+38
 ~ 3.402823466E+38
DOUBLE倍精度浮動小数点型 -1.7976931348623157E+308
 ~ 1.7976931348623157E+308

使い方:CREATE TABLE sample (id DECIMAL(10,3));

DECIMALは小数点の桁数や全体の桁数を指定することができます。

使い方は「DECIMAL(p,s)」で、pが全体の桁数で、sが小数部の桁数です。

例えば、DECIMAL(10,3)なら整数部分が7桁、小数部が3桁になります。

UNSIGNEDについて

「UNSIGNED」オプションを付けると符号を禁止にすることができます。

負の数が使用できませんが、正の数で扱える数値の範囲は2倍まで広くなりません。

CREATE TABLE sample (id DECIMAL(10,3) UNSIGNED);

上記の例のようにデータ型の後ろにオプションを付けます。

ZEROFILLについて

「ZEROFILL」オプションを付けると表示桁数に満たない数値の場合は、「0」を自動で左詰めします。

例えば、データ型に「DECIMAL(10,3)」を設定したカラムに「78.423」を入力すると、「0000078.423」で登録されます。

名無し君
名無し君
ZEROFILLは負の数を使用することはできません。

CREATE TABLE sample (id DECIMAL(10,3) ZEROFILL);

 

文字列型

文字列を入力する場合は以下のデータ型を使用します。

データ型内容
VARCHAR
(使用頻度高)
可変長文字型VARCHAR(m)のようにして格納できるバイト数を指定できる。
mには、0~65535バイトを設定できる。
CHAR型のように半角スペースで右詰めはされない。
TEXT
(使用頻度高)
テキスト型TEXT(m)のようにして格納できる文字数を指定できる。
mには、0~65535バイトを設定できる。
文字列を格納するのに最適。
CHAR
(使用頻度高)
固定

長文字型

CHAR(m)のようにして格納できる文字数を指定できる。
mには、0~255を設定できる。デフォルトでは1になっている。
格納されるデータは指定された長さになるように半角スペースで右詰めされる。
TYNYTEXTテキスト型文字列を最大255文字格納できる。
MEDIUMTEXTテキスト型文字列を最大65535文字格納できる。
LONGTEXTテキスト型文字列を最大4,294,967,295文字格納できる。
BINARY固定長バイナリバイト型BINARY(m)のようにして格納できる文字数を指定できる。
mには0~255を設定できる。デフォルトは1になっている。
固定長バイナリバイト文字列を格納する。
VARBINARY可変長バイナリバイト型VARBINARY(m)のようにして格納できる文字数を指定できる。
mには0~65,535を設定できる。
可変長バイナリバイト文字列を格納する。

使い方:CREATE TABLE sample (id DECIMAL(10,3));

CHAR型やVARCHAR型は文字列がデータベースに直接保存されます。

TEXT型はデータベースとは別の場所に保存され、保存されているポインタのみ保存されます。

その為、処理速度等の問題から短い文字列であればCHAR型やVARCHAR型を使った方が、効率的に処理できると言えます。

日付型・時間型

日付や時間を扱う場合は以下のデータ型を使います。テーブルへ登録できる日付や時間のフォーマットが異なります。

データ型基本フォーマット
DATE
(使用頻度高)
日付型‘YYYY-MM-DD’
(例: ‘2022-02-02’)
DATETIME
(使用頻度高)
日付時間型‘YYYY-MM-DD HH:MM:SS’
(例: ‘2022-02-02 12:30:22’)
TIMESTAMP
(使用頻度高)
日付時間型‘YYYY-MM-DD HH:MM:SS’
(例: ‘2022-02-02 12:30:22’)
TIME時間型‘HH:MM:SS’
(例: ’12:30:22’)
YEAR[4]日付型(4桁の年)‘YYYY’
(例: ‘2022’)
YEAR[2]日付型(2桁の年)‘YY’
(例: ’22’)

使い方:CREATE TABLE sample (date DATE);

日付型の基本となるフォーマットは’YYYY-MM-DD’であり、年月日の間を「-(ハイフン)」で区切られています。

この「-」については省略することができます。また、「-」ではなく「/」「.」「@」を使用することも可能です。

  • ‘YYYY-MM-DD’ → ’2022-02-12’
  • ‘YY-MM-DD’   → ’22-02-12’
  • ‘YYYYMMDD’  → ’20220212’
  • ‘YYYY/MM/DD’ → ’2022/02/12’

時間型の基本となるフォーマットは’HH:MM:SS’であり、時分秒の間を「:」で区切られています。

この「:」については省略することができます。

  • ‘HH:MM:SS’ → ’12:30:22’
  • ‘HHMMSS’  → ’123022’

基本フォーマット以外でも登録することが可能です。

BOOLEAN型

このデータ型は真(TRUE)または偽(FALSE)の2択を保存する場合に使います。

データ型内容
BOOL,BOOLEAN
(使用頻度高)
BOOLEAN型「TRUE」と「FALSE」の2択を保存する時に使用する。

使い方:CREATE TABLE sample (member BOOL);

このBOOLEAN型は、内部的にはTINYINT(1)として扱れています。TINYINTは整数型(1バイト)なので、-128 ~ 127の整数を格納することができます。

TRUEは「1」として、FALSEは「0」として登録されることになります。

まとめ

今回の記事では、MySQLで使うデータ型の一覧について紹介しました。

テーブルを定義する際には必ず指定します。データ型の種類と内容を理解して、MySQLでSQL文を実行していきましょう。

・テーブル作成時にカラム毎にデータ型を指定する。

・データ型の種類には、数値型・日付型・文字列型等がある。

以上、最後まで読んでいただきありがとうございました。

プログラミングを学習したいなら…

プログラミングスキルを身に付けるなら、プログラミングを効率良く学べる
プログラミングスクール」がオススメです。

特にこんな方にオススメ!!
これからエンジニアを目指したい
プログラミングの専門性を高めたい
プログラミングを学んで副業をしたい
エンジニアに転職して年収をアップさせたい

プログラミングを触ったことがない未経験からでも、プログラミングスクールで学習すれば、エンジニアへ就職・転職することも可能です。

あなたの「行動力」と「やる気」で、あなたの人生を大きく変えるチャンスになることでしょう。

プログラミングスクールに興味がある方は是非チェックしてみてください。

> プログラミングを学ぶ <

COMMENT

メールアドレスが公開されることはありません。

CAPTCHA