lvncerpedia

数値型

型例用途
TINYINT120年齢、フラグ
SMALLINT32000小規模カウント
MEDIUMINT5000000中規模ID
INT123456789一般的なID
BIGINT9223372036854775807大規模ID
DECIMAL(10,2)1999.99金額
FLOAT3.14誤差OKな小数
DOUBLE12345.6789精度高め小数
BOOLEANtrue / falseON/OFF
price DECIMAL(10,2)
age TINYINT
is_admin BOOLEAN

文字列型

型例用途
CHAR(5)"A1234"固定コード
VARCHAR(255)"lvncer"名前、メール
TEXT"今日は..."長文
LONGTEXT小説全文超長文
ENUM"active"状態
SET"red,blue"複数タグ
JSON{"hp":100}設定データ
username VARCHAR(255)
bio TEXT
status ENUM('active', 'banned')
settings JSON

日付・時間型

型例用途
DATE2026-05-14誕生日
TIME13:45:00時刻
DATETIME2026-05-14 13:45:00投稿日時
TIMESTAMP2026-05-14 13:45:00更新日時
YEAR2026年
birthday DATE
created_at DATETIME
updated_at TIMESTAMP

バイナリ型

型例用途
BLOB画像データバイナリ保存
LONGBLOB動画巨大データ
image BLOB

でも実務だと画像はDBじゃなくてS3とかに置いてURL保存が多い。


GIS系

型例用途
POINT(139.7,35.6)座標
POLYGON地域範囲地図
location POINT

実際のテーブル例

CREATE TABLE users (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(255) NOT NULL,
  email VARCHAR(255) UNIQUE,
  age TINYINT,
  bio TEXT,
  is_admin BOOLEAN DEFAULT false,
  settings JSON,
  created_at DATETIME
);

型選びの感覚

迷ったら使う
整数BIGINT
文字列VARCHAR(255)
長文TEXT
金額DECIMAL
日時DATETIME
true/falseBOOLEAN
柔軟データJSON

あと初心者あるあるとして、

username TEXT

にしがちだけど、検索やindex考えると普通は

username VARCHAR(255)

の方がいいこと多い。 TEXTは「本当に長文」のイメージ。