カテゴリ: データベース 更新日: 2026/04/15

MySQLのデータ型を完全解説!初心者でもわかる使い分けガイド

MySQLのデータ型の特徴と使い分けを解説
MySQLのデータ型の特徴と使い分けを解説

先生と生徒の会話形式で理解しよう

生徒

「MySQLのデータ型って何ですか?難しそうで不安です…」

先生

「データ型は、データベースに保存する情報の種類を指定するものです。例えば、数字を入れる箱、文字を入れる箱、日付を入れる箱のように、入れるものによって箱の種類を変えるイメージですね。」

生徒

「なるほど!でも種類がたくさんあって覚えられるか心配です…」

先生

「大丈夫です。よく使うものは限られていますし、それぞれの特徴を理解すれば自然に使い分けられるようになりますよ。」

1. MySQLのデータ型とは何か?

1. MySQLのデータ型とは何か?
1. MySQLのデータ型とは何か?

MySQLのデータ型とは、データベースのテーブルに保存するデータの種類を定義するものです。紙の帳簿で例えると、年齢の欄には数字しか書かない、名前の欄には文字を書く、というルールを決めるようなものです。

データ型を正しく設定することで、データベースは効率よくデータを保存し、検索や計算を正確に行えるようになります。間違ったデータ型を選ぶと、無駄に容量を使ったり、エラーが発生したりすることがあります。

ポイント: データ型は後から変更できますが、データが既に入っている場合は変換作業が必要になるため、最初に適切なデータ型を選ぶことが重要です。

エンジニアの必須スキル「SQL」を、 図解と豊富な練習問題でゼロから体系的に学びたい人へ。 MySQLやPostgreSQLなど、各種データベースに対応した不朽の入門書です。

SQL 第2版 ゼロからはじめるデータベース操作をAmazonで見る

※ Amazon広告リンク

2. 数値型データ型の種類と使い分け

2. 数値型データ型の種類と使い分け
2. 数値型データ型の種類と使い分け

数値型は、数字を扱うためのデータ型です。MySQLには整数を扱う型と小数を扱う型があり、それぞれ保存できる数値の範囲が異なります。

整数型の種類

整数型には、TINYINT、SMALLINT、MEDIUMINT、INT、BIGINTの5種類があります。それぞれ保存できる数値の範囲が違い、小さい型ほど使用する容量が少なくなります。

  • TINYINT: -128から127まで保存可能。年齢や月など小さな数値に最適です。
  • SMALLINT: -32768から32767まで保存可能。在庫数や順位などに使います。
  • INT: 約-21億から21億まで保存可能。会員番号やIDなど一般的な数値に使います。
  • BIGINT: 非常に大きな数値を保存可能。アクセス数や金額など大きな数値に使います。

テーブル作成の例を見てみましょう。会員情報を保存するテーブルを作成します。


CREATE TABLE members (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age TINYINT,
    point INT
);

このテーブルにデータを登録してみます。


INSERT INTO members (name, age, point) VALUES
('山田太郎', 25, 1500),
('佐藤花子', 32, 2800),
('鈴木一郎', 19, 500),
('田中美咲', 45, 12000);

登録されたデータは以下のようになります。


id | name       | age | point
---+------------+-----+-------
1  | 山田太郎   | 25  | 1500
2  | 佐藤花子   | 32  | 2800
3  | 鈴木一郎   | 19  | 500
4  | 田中美咲   | 45  | 12000

小数型の種類

小数を扱う場合は、FLOAT、DOUBLE、DECIMALを使います。FLOATとDOUBLEは近似値を保存し、DECIMALは正確な値を保存します。

  • DECIMAL: 金額など正確な計算が必要な場合に使います。DECIMAL(10,2)のように桁数を指定します。
  • FLOAT: 科学計算など多少の誤差が許される場合に使います。
注意: 金額計算にはDECIMAL型を使いましょう。FLOATやDOUBLEは計算誤差が生じる可能性があります。

3. 文字列型データ型の特徴と選び方

3. 文字列型データ型の特徴と選び方
3. 文字列型データ型の特徴と選び方

文字列型は、名前や住所などの文字データを保存するためのデータ型です。主にCHAR、VARCHAR、TEXTの3種類が使われます。

CHARとVARCHARの違い

CHARは固定長、VARCHARは可変長の文字列型です。CHARは指定した文字数分の領域を常に確保し、VARCHARは実際の文字数分だけ領域を使います。

  • CHAR: 常に同じ文字数のデータに最適。都道府県コードや性別コードなど。
  • VARCHAR: 文字数が変動するデータに最適。名前、メールアドレス、住所など。
  • TEXT: 長文を保存する場合に使用。ブログ記事や商品説明など。

商品テーブルを作成する例です。


CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    code CHAR(8),
    name VARCHAR(100),
    description TEXT,
    price DECIMAL(10,2)
);

商品データを登録します。


INSERT INTO products (code, name, description, price) VALUES
('PRD00001', 'ノートパソコン', '高性能な15インチノートパソコンです', 98000.00),
('PRD00002', 'マウス', 'ワイヤレスマウス', 2500.00),
('PRD00003', 'キーボード', 'メカニカルキーボード', 15000.00),
('PRD00004', 'モニター', '27インチ4Kモニター', 45000.00);

登録されたデータの確認です。


id | code     | name             | description                          | price
---+----------+------------------+--------------------------------------+----------
1  | PRD00001 | ノートパソコン   | 高性能な15インチノートパソコンです   | 98000.00
2  | PRD00002 | マウス           | ワイヤレスマウス                     | 2500.00
3  | PRD00003 | キーボード       | メカニカルキーボード                 | 15000.00
4  | PRD00004 | モニター         | 27インチ4Kモニター                   | 45000.00
使い分けのコツ: 文字数が決まっているものはCHAR、変動するものはVARCHAR、長文はTEXTと覚えましょう。

4. 日付・時刻型データ型の活用方法

4. 日付・時刻型データ型の活用方法
4. 日付・時刻型データ型の活用方法

日付や時刻を扱う場合は、DATE、TIME、DATETIME、TIMESTAMPなどの日付時刻型を使います。これらは日付の計算や比較を簡単に行えるように設計されています。

  • DATE: 年月日のみを保存します。誕生日や記念日などに使用します。
  • TIME: 時刻のみを保存します。営業時間や所要時間などに使用します。
  • DATETIME: 年月日と時刻を保存します。イベント日時や予約時刻などに使用します。
  • TIMESTAMP: DATETIMEと似ていますが、レコードの作成・更新日時の記録に最適です。

予約管理システムのテーブル例を見てみましょう。


CREATE TABLE reservations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_name VARCHAR(50),
    reservation_date DATE,
    reservation_time TIME,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

予約データを登録してみます。


INSERT INTO reservations (customer_name, reservation_date, reservation_time) VALUES
('高橋健太', '2026-02-15', '10:00:00'),
('伊藤由美', '2026-02-15', '14:30:00'),
('渡辺修', '2026-02-16', '11:00:00'),
('中村真理', '2026-02-17', '15:00:00'),
('小林直樹', '2026-02-18', '09:30:00');

登録された予約データです。


id | customer_name | reservation_date | reservation_time | created_at
---+---------------+------------------+------------------+---------------------
1  | 高橋健太      | 2026-02-15       | 10:00:00         | 2026-01-06 10:30:15
2  | 伊藤由美      | 2026-02-15       | 14:30:00         | 2026-01-06 10:31:22
3  | 渡辺修        | 2026-02-16       | 11:00:00         | 2026-01-06 10:32:08
4  | 中村真理      | 2026-02-17       | 15:00:00         | 2026-01-06 10:33:45
5  | 小林直樹      | 2026-02-18       | 09:30:00         | 2026-01-06 10:34:12
便利な機能: TIMESTAMPにDEFAULT CURRENT_TIMESTAMPを指定すると、自動的に現在の日時が記録されます。

5. その他の便利なデータ型

5. その他の便利なデータ型
5. その他の便利なデータ型

MySQLには、特定の用途に便利なデータ型も用意されています。代表的なものを紹介します。

ENUM型とSET型

ENUM型は、あらかじめ定義した選択肢の中から1つだけ値を選ぶ場合に使います。性別や会員ランクなど、限られた選択肢から選ぶ項目に最適です。

SET型は、複数の選択肢から複数の値を選べます。趣味や資格など、複数選択可能な項目に使用します。

BOOLEAN型

BOOLEAN型は、真偽値を保存します。MySQLではTINYINT(1)として扱われ、TRUEが1、FALSEが0で保存されます。フラグや有効・無効の管理に便利です。

データ型選びのポイント: 保存するデータの性質をよく考え、最も適したデータ型を選びましょう。迷ったときは、よく使われる標準的なデータ型を選ぶのが安全です。

6. データ型選びで失敗しないための注意点

6. データ型選びで失敗しないための注意点
6. データ型選びで失敗しないための注意点

データ型を選ぶ際には、いくつかの重要なポイントがあります。適切なデータ型を選ぶことで、データベースのパフォーマンスが向上し、エラーも防げます。

データ型選びのチェックリスト

  • 保存する値の範囲は十分か?年齢にBIGINTは無駄です。
  • 文字列の最大長は適切か?短すぎるとエラーになります。
  • 小数点以下の桁数は必要か?金額計算はDECIMAL型を使いましょう。
  • 日付や時刻を文字列で保存していないか?専用の型を使うと便利です。
  • 将来的にデータが増える可能性は?余裕を持たせることも大切です。

適切なデータ型を選ぶことで、データベースの容量を節約し、検索速度も向上します。例えば、性別を保存する場合、VARCHAR(50)よりもCHAR(1)やENUM型の方が効率的です。

また、数値として扱うデータは必ず数値型を使いましょう。電話番号や郵便番号は数値のように見えますが、先頭のゼロが必要な場合やハイフンを含む場合があるため、文字列型が適しています。

よくある間違い: 全ての項目をVARCHAR型にしてしまうことです。データの性質に合わせて適切な型を選びましょう。
カテゴリの一覧へ
新着記事
New1
データベース
MySQLのデータ型を完全解説!初心者でもわかる使い分けガイド
New2
Ruby
Rubyの破壊的メソッドと述語メソッドを徹底解説!記号で意図を伝える命名規約
New3
Rails
Railsのジェネレータをカスタマイズしよう!初心者でもできる.railsrcとconfig設定
New4
Rails
Railsの初期化処理を徹底解説!初心者でもわかるinitializerとミドルウェア設定
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Rails本番運用入門:環境設計・ステージング・本番をゼロから理解するロードマップ
No.3
Java&Spring記事人気No3
Ruby
Rubyメソッド引数の完全ガイド!位置引数・デフォルト値・可変長引数の設計
No.4
Java&Spring記事人気No4
データベース
PostgreSQLのCTE(WITH句)完全解説!複雑なSQLを整理して読みやすくする書き方
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
データベース
PostgreSQL配列型(Array)入門ガイド!初心者でもわかるデータベースの便利な使い方
No.7
Java&Spring記事人気No7
データベース
PostgreSQLのデータ型を完全解説!初心者でも失敗しないデータベース入門
No.8
Java&Spring記事人気No8
Ruby
プロキシ環境でも安心!社内ネットワーク下でのRuby gemインストール完全ガイド【SSL対応も解説】