各カラムには、数値、文字列、日時、真偽値など、格納できる値を決める データ型があります。適切な型を選ぶことは、ストレージ効率、正しさ、性能に影響します。細部は DB ごとに異なりますが、カテゴリは共通しています。
数値型
sql
INT / INTEGER -- 整数
BIGINT -- 大きな整数。大きく増える ID など
SMALLINT -- 小さな整数。省スペース
DECIMAL(10,2) / NUMERIC -- 正確な小数。金額など
FLOAT / DOUBLE -- 近似小数。科学計算など
金額には丸め誤差を避けるため DECIMAL / NUMERIC を使うのが一般的です。
文字列型
sql
VARCHAR(n) -- 最大長つき可変長文字列
TEXT -- 長い文章
CHAR(n) -- 固定長文字列
日時型
sql
DATE -- 日付
TIME -- 時刻
TIMESTAMP -- 日付と時刻
タイムゾーンの扱いは DB とアプリケーション設計に合わせて明確にする必要があります。
その他
sql
BOOLEAN -- true / false
UUID -- UUID
JSON / JSONB -- JSON データ
BLOB / BYTEA -- バイナリデータ
選び方
text
✓ 値の範囲に合う最小限の型を選ぶ
✓ 金額は exact numeric を使う
✓ 日付/時刻は文字列ではなく日時型を使う
✓ 検索や制約に使う値は適切な型にする
✓ JSON は柔軟だが、頻繁に検索する属性は通常カラムも検討する
なぜ重要なのか
データ型はデータ品質と性能の土台です。間違った型を選ぶと、丸め誤差、無効な値、ソートや検索の問題、不要なストレージ消費につながります。保存する値の意味、範囲、検索方法、精度要件に基づいて型を選ぶことが重要です。
