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 |
INT, INTEGER は数値の範囲、格納サイズおよび性能において最も釣り合いが取れていることから一般的に使用されています。
TYNYINT や SMALLINT は通常はディスク容量に制限が付いている場合にも使用することが多いです。
UNSIGNEDについて
通常、数値型は正負の符号を持たせることができます。
「UNSIGNED」オプションを付けると符号を禁止にすることができます。
負の数が使用できない代わりに、正の数で扱える数値の範囲が2倍まで広くなります。
上記の例のようにデータ型の後ろにオプションを付けます。
ZEROFILLについて
「ZEROFILL」オプションを付けると表示桁数に満たない数値の場合は、「0」を自動で左詰めします。
例えば、データ型に「TYNYINT」を設定したカラムに「78」を入力すると、「078」で登録されます。
数値型(浮動小数点型)
整数ではなく小数点を登録したい場合は、以下のデータ型を使用します。
型 | データ型 | 数値の範囲 |
---|---|---|
DECIMAL (使用頻度高) | 10進数小数型 | 1-10E+38 ~ -1+10E+38 |
FLOAT | 単精度浮動小数点型 | 3.402823466E+38 ~ 3.402823466E+38 |
DOUBLE | 倍精度浮動小数点型 | -1.7976931348623157E+308 ~ 1.7976931348623157E+308 |
DECIMAL は小数点の桁数や全体の桁数を指定することができます。
使い方は「DECIMAL(p,s)」で、p が全体の桁数で、s が小数部の桁数です。
例えば、DECIMAL(10,3) なら整数部分が7桁、小数部が3桁になります。
UNSIGNEDについて
「UNSIGNED」オプションを付けると符号を禁止にすることができます。
負の数が使用できませんが、正の数で扱える数値の範囲は2倍まで広くなりません。
上記の例のようにデータ型の後ろにオプションを付けます。
ZEROFILLについて
「ZEROFILL」オプションを付けると表示桁数に満たない数値の場合は、「0」を自動で左詰めします。
例えば、データ型に「DECIMAL(10,3)」を設定したカラムに「78.423」を入力すると、「0000078.423」で登録されます。
文字列型
文字列を入力する場合は以下のデータ型を使用します。
型 | データ型 | 内容 |
---|---|---|
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を設定できる。 可変長バイナリバイト文字列を格納する。 |
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’) |
日付型の基本となるフォーマットは’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択を保存する時に使用する。 |
この BOOLEAN 型は、内部的には TINYINT(1) として扱れています。TINYINT は整数型(1バイト)なので、-128 ~ 127の整数を格納することができます。
TRUE は「1」として、FALSEは「0」として登録されることになります。
まとめ
今回の記事では、MySQL で使うデータ型の一覧について紹介しました。
テーブルを定義する際には必ず指定します。データ型の種類と内容を理解して、MySQL で SQL文を実行していきましょう。
- ・テーブル作成時にカラム毎にデータ型を指定する。
- ・データ型の種類には、数値型・日付型・文字列型等がある。
以上、最後まで読んでいただきありがとうございました。