カテゴリ: データベース 更新日: 2025/03/06

SQLのデータ型を完全ガイド!初心者でもわかるデータ型の種類と使い方

SQLのデータ型
SQLのデータ型

新人と先輩の会話形式で理解しよう

新人

「データベースにデータを保存するとき、どんな種類があるんですか?」

先輩

「データベースでは、保存するデータの種類ごとに適切なデータ型を指定する必要があるんだ。」

新人

「データ型って具体的にはどんなものがあるんですか?」

先輩

「主に数値、文字列、日付・時刻の3つのカテゴリーに分かれるよ。今回は、数値型について詳しく見ていこう!」

1. データ型とは何か?

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

データベースでデータを格納するとき、どのような値を保存するかを決めるのがデータ型です。

データ型を適切に選ぶことで、無駄なストレージを削減し、データの整合性を保つことができます。

主なデータ型の種類

  • 数値型(INT, DECIMAL, FLOAT): 数値データを保存
  • 文字列型(VARCHAR, CHAR, TEXT): 文字列を保存
  • 日付・時刻型(DATE, DATETIME, TIMESTAMP): 日付や時刻を保存

今回は、数値データを扱う「数値型」について詳しく解説します。

2. 数値型(INT, DECIMAL)の種類と使い方

2. 数値型(INT, DECIMAL)の種類と使い方
2. 数値型(INT, DECIMAL)の種類と使い方

数値型には、整数を扱うINTと、小数点を含むDECIMALがあります。

1. 整数型(INT)

整数型(INT)は、小数点を含まない数値を保存するのに使用します。


CREATE TABLE employee (
    id INT PRIMARY KEY,
    age INT,
    salary INT
);

このテーブルでは、id(社員ID)、age(年齢)、salary(給与)にINTを使用しています。

2. 小数型(DECIMAL)

小数点を含む数値を扱う場合は、DECIMAL型を使用します。


CREATE TABLE product (
    id INT PRIMARY KEY,
    price DECIMAL(10,2)
);

このテーブルでは、price(価格)にDECIMAL(10,2)を指定しています。

  • 10: 最大10桁まで保存可能
  • 2: 小数点以下2桁まで保存可能

例えば、以下のようなデータが保存できます。

id price
11500.50
22999.99

このように、DECIMALを使うことで、小数点を含む金額などを正確に保存できます。

3. 文字列型(VARCHAR, CHAR)の違いと適切な使い方

3. 文字列型(VARCHAR, CHAR)の違いと適切な使い方
3. 文字列型(VARCHAR, CHAR)の違いと適切な使い方

データベースでテキストを扱う場合、VARCHARCHARの2種類の文字列型があります。

1. 可変長のVARCHAR

VARCHARは、可変長の文字列を保存するデータ型です。文字数に応じてデータのサイズが変わるため、効率よくストレージを使用できます。


CREATE TABLE customer (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100)
);

このテーブルでは、nameを最大50文字、emailを最大100文字まで格納できます。

2. 固定長のCHAR

CHARは、固定長の文字列を保存するデータ型です。データの長さが決まっている場合に適しています。


CREATE TABLE country (
    code CHAR(3),
    name VARCHAR(50)
);

このテーブルでは、code(国コード)にCHAR(3)を指定しています。

例えば、"JPN" や "USA" のように常に3文字でデータを保存する場合は、CHARを使うと効率的です。

3. VARCHARとCHARの違い

データ型 特徴 用途
VARCHAR 可変長で、文字数が少ないとストレージを節約できる 名前、住所、メールアドレスなど
CHAR 固定長で、データの長さが一定なら処理が速い 国コード、郵便番号など

基本的にはVARCHARを使用し、データの長さが一定の場合はCHARを選ぶと良いでしょう。

4. 日付型(DATE, TIMESTAMP)の種類と使い方

4. 日付型(DATE, TIMESTAMP)の種類と使い方
4. 日付型(DATE, TIMESTAMP)の種類と使い方

日付や時刻を扱う場合、DATETIMESTAMPを使います。

1. DATE型

DATEは、年月日のみを保存するデータ型です。


CREATE TABLE orders (
    id INT PRIMARY KEY,
    order_date DATE
);

このテーブルでは、order_dateYYYY-MM-DD形式の日付を保存できます。

例:

id order_date
12024-05-10
22024-06-15

2. TIMESTAMP型

TIMESTAMPは、年月日+時刻を保存するデータ型です。


CREATE TABLE logs (
    id INT PRIMARY KEY,
    event_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

このテーブルでは、event_timeにデフォルトで現在の日時が自動保存されます。

例:

id event_time
12024-05-10 14:30:00
22024-06-15 09:45:20

3. DATEとTIMESTAMPの違い

データ型 保存内容 用途
DATE 年月日 (YYYY-MM-DD) 誕生日、注文日など
TIMESTAMP 年月日 + 時刻 (YYYY-MM-DD HH:MM:SS) ログの記録、イベント発生時刻など

日付だけ保存する場合はDATE、時刻まで記録する場合はTIMESTAMPを使いましょう。

5. データ型を適切に選ぶポイント

5. データ型を適切に選ぶポイント
5. データ型を適切に選ぶポイント

データ型を選ぶときは、次のポイントを考慮しましょう。

1. 必要なデータの種類を考える

数値を保存するならINTDECIMAL、文字列ならVARCHARTEXTを使います。

2. データの長さを考える

文字列の長さが一定ならCHAR、変動するならVARCHARが適しています。

3. パフォーマンスを意識する

不要に大きなデータ型を使うと、ストレージを無駄に消費するため、必要最小限のサイズを選びましょう。

4. 将来の拡張性を考える

データの増加を見越して適切なデータ型を選びましょう。

例えば、社員の給与を保存するなら、次のように設計できます。


CREATE TABLE employee (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    salary DECIMAL(10,2),
    hire_date DATE
);

このようにデータ型を適切に選ぶことで、効率的にデータを管理できます。

6. よくあるエラーと対策(型変換ミス・NULLの扱い)

6. よくあるエラーと対策(型変換ミス・NULLの扱い)
6. よくあるエラーと対策(型変換ミス・NULLの扱い)

データ型を適切に扱わないと、SQLの実行時にエラーが発生することがあります。ここでは、初心者がよく遭遇するエラーとその対策を紹介します。

1. 型変換ミス

文字列を数値に変換しようとしたり、数値を日付に変換しようとするとエラーになります。


SELECT age + '30' FROM employee;

エラー内容: ERROR: invalid input syntax for integer

対策: 文字列を数値に変換するにはCASTCONVERTを使用する。


SELECT age + CAST('30' AS INT) FROM employee;

2. NULLの扱い

NULLは「値が存在しない」ことを示す特殊なデータです。NULLを適切に扱わないと予期しない結果になることがあります。


SELECT salary + 10000 FROM employee;

もしsalaryにNULLがあると、計算結果もNULLになってしまいます。

対策: NULLを0として扱う場合はCOALESCEを使用する。


SELECT COALESCE(salary, 0) + 10000 FROM employee;

これで、NULLのデータも計算可能になります。

7. CAST関数・CONVERT関数を使ったデータ型変換

7. CAST関数・CONVERT関数を使ったデータ型変換
7. CAST関数・CONVERT関数を使ったデータ型変換

SQLでは、異なるデータ型を変換するためにCAST関数とCONVERT関数を使用します。

1. CAST関数

CASTを使うと、データ型を指定した型に変換できます。


SELECT CAST('2024-05-10' AS DATE);

このSQLを実行すると、文字列をDATE型に変換します。

2. CONVERT関数(MySQL、SQL Server)

MySQLやSQL Serverでは、CONVERT関数を使うことで、データ型の変換が可能です。


SELECT CONVERT('2024-05-10', DATE);

このSQLは、文字列をDATE型に変換します。

3. 数値を文字列に変換する

数値を文字列に変換する場合も、CASTCONVERTを使用します。


SELECT CAST(salary AS CHAR) FROM employee;

これにより、給与データ(数値)が文字列として扱われるようになります。

8. 実践!データ型を適切に選んでテーブルを設計しよう

8. 実践!データ型を適切に選んでテーブルを設計しよう
8. 実践!データ型を適切に選んでテーブルを設計しよう

適切なデータ型を選ぶことで、データの管理がスムーズになります。ここでは、具体的なテーブル設計の例を紹介します。

1. 従業員管理テーブル


CREATE TABLE employee (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    salary DECIMAL(10,2),
    hire_date DATE
);

データ型の選択ポイント:

  • id → 一意の番号なのでINT(主キー)
  • name → 変動する名前の長さに対応するためVARCHAR
  • age → 年齢は整数なのでINT
  • salary → 小数点を含む給与を保存するためDECIMAL(10,2)
  • hire_date → 採用日を記録するためDATE

2. 商品管理テーブル


CREATE TABLE product (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    price DECIMAL(10,2),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

データ型の選択ポイント:

  • id → 商品ごとに一意のIDを持つためINT
  • name → 商品名は長さが可変なのでVARCHAR(100)
  • price → 小数点を含む金額を記録するためDECIMAL(10,2)
  • created_at → 商品の登録日時を保存するためTIMESTAMP

3. 注文管理テーブル


CREATE TABLE orders (
    id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    total_price DECIMAL(12,2)
);

データ型の選択ポイント:

  • id → 注文ごとに一意の番号を持つためINT
  • customer_id → 顧客の識別のためINT
  • order_date → 注文日を記録するためDATE
  • total_price → 合計金額を保存するためDECIMAL(12,2)

適切なデータ型を選ぶことで、データの整合性を保ちつつ、効率的なデータ管理が可能になります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
Java ServletのdoGet()メソッドとは?初心者でもわかる役割と使い方を完全解説
Spring Bootのプロジェクト構成をやさしく理解しよう
起動エラーが出たときの基本的な対処法
Java の else if を使って複数の条件を分けよう
人気記事
No.1
Java&Spring記事人気No1
SQLのビュー(VIEW)を完全ガイド!初心者でもわかる仮想テーブルの使い方
No.2
Java&Spring記事人気No2
SQLのロック(LOCK)を完全ガイド!初心者でもわかるデータの整合性の守り方
No.3
Java&Spring記事人気No3
DB接続失敗やSQLエラーの表示と対策を完全解説!初心者でもわかるSpringのエラーハンドリング
No.4
Java&Spring記事人気No4
Java の new キーワードとは?初心者でもわかるオブジェクト生成のしくみ