【データベース】データベース型定義チートシート - j-komatsu/myCheatSheet GitHub Wiki

データベース型定義チートシート

1. 主なデータ型の概要

データ型は、データベースで値を格納するための「容器」のようなもので、格納できる値の種類を定義します。適切なデータ型を選ぶことで、ストレージ効率を向上させ、クエリのパフォーマンスを最大化できます。以下に、主要なデータ型とその例を整理しました。


2. メジャーデータベース別 型の分類

2.1 文字列型(String Types)

型名 MySQL PostgreSQL SQL Server Oracle 説明
CHAR(n) 固定長文字列 固定長文字列 固定長文字列 固定長文字列 固定長の文字列を格納する。短い文字列で効率的。
VARCHAR(n) 可変長文字列 可変長文字列 可変長文字列 可変長文字列 長さが変動する文字列に適している。
TEXT 長文用文字列 同じ 同じ CLOB 長文や大規模テキストデータを格納。
NCHAR(n) 非ASCII文字列 非ASCII文字列 非ASCII文字列 NCHAR Unicode文字列を格納する。
NVARCHAR(n) 可変長Unicode文字列 同じ 同じ NVARCHAR マルチバイト文字の保存に最適。

2.2 数値型(Numeric Types)

型名 MySQL PostgreSQL SQL Server Oracle 説明
INT 整数型 整数型 同じ NUMBER 整数を格納。例: 年齢、数量など。
BIGINT 大きな整数 同じ 同じ 同じ 非常に大きな整数を格納。
DECIMAL 高精度数値型 NUMERIC 同じ 同じ 金額や精度の高い数値に適している。
FLOAT 浮動小数点型 同じ 同じ BINARY_FLOAT 科学的計算やセンサーのデータ向け。
SMALLINT 小さな整数型 SMALLINT 同じ 同じ ストレージ効率を重視する場合に使用。
TINYINT 非常に小さな整数型 - 同じ - 例: 0〜255の範囲で使用するカウンタなど。

2.3 日付・時刻型(Date and Time Types)

型名 MySQL PostgreSQL SQL Server Oracle 説明
DATE 日付 日付 日付 日付 年月日を格納する。
DATETIME 日時 TIMESTAMP 同じ 同じ 年月日時分秒を格納。
TIMESTAMP タイムスタンプ TIMESTAMPTZ 同じ 同じ タイムゾーン対応の日時。
TIME 時刻 同じ 同じ 同じ 時刻情報のみを格納。
YEAR 年情報のみ - - - 年単位でデータを扱う場合に使用。

2.4 ブール型(Boolean Types)

型名 MySQL PostgreSQL SQL Server Oracle 説明
BOOLEAN TINYINT(1) BOOLEAN BIT NUMBER(1) 真偽値(True/False)を格納する。

2.5 バイナリ型(Binary Types)

型名 MySQL PostgreSQL SQL Server Oracle 説明
BLOB バイナリデータ BYTEA VARBINARY(MAX) BLOB バイナリ形式のデータ(例: 画像やファイル)を格納。
VARBINARY 可変長バイナリ 同じ 同じ - 可変長のバイナリデータを扱う。

2.6 JSON型(JSON Types)

型名 MySQL PostgreSQL SQL Server Oracle 説明
JSON JSON形式 JSON NVARCHAR(MAX) BLOB 構造化されたJSONデータを格納。
JSONB - バイナリJSON - - 高速に検索可能なJSONデータ。

2.7 地理データ型(Spatial Types)

型名 MySQL PostgreSQL SQL Server Oracle 説明
GEOMETRY 空間データ型 GEOMETRY GEOGRAPHY SDO_GEOMETRY 緯度経度や座標データを格納。
POINT 点情報 同じ - - 特定の点を表現。

3. SQLクエリでのデータ型の使用例

MySQLの例

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

PostgreSQLの例

CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    customer_name VARCHAR(255) NOT NULL,
    order_date DATE NOT NULL,
    items JSONB
);

SQL Serverの例

CREATE TABLE locations (
    id INT PRIMARY KEY,
    name NVARCHAR(255),
    coordinates GEOGRAPHY
);

4. ケーススタディ: オンラインショップデータベース

以下は、典型的なオンラインショップのデータベース設計例です:

erDiagram
    PRODUCTS {
        INT id PK
        VARCHAR name
        DECIMAL price
        TEXT description
        INT stock
    }
    USERS {
        INT id PK
        VARCHAR username
        VARCHAR email
        DATE created_at
    }
    ORDERS {
        INT id PK
        INT user_id FK
        DATE order_date
        JSONB items
    }