【データベース】データベース型定義チートシート - 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
}