SQL CREATE TABLE構文と例

SQLのCREATE TABLE構文の完全ガイド。カラム定義、データ型、制約、PostgreSQL・MySQL・SQLiteのダイアレクト別の例を解説します。

DDL Commands

詳細な説明

CREATE TABLEの基礎

CREATE TABLE文はデータベースに新しいテーブルを定義します。SQLデータ定義言語(DDL)の基盤であり、ほとんどの開発者が最初に学ぶコマンドです。

基本構文

CREATE TABLE table_name (
  column_name data_type [constraints],
  ...
);

カラム制約

制約 目的
PRIMARY KEY 各行を一意に識別する
NOT NULL NULL値を防止する
UNIQUE カラム内のすべての値が重複しないことを保証する
DEFAULT value 値が提供されない場合のフォールバック値を設定する
CHECK (condition) 条件に対してデータを検証する
REFERENCES table(col) 外部キー関係を作成する

ダイアレクトの違い

  • PostgreSQLは自動増分整数にSERIALまたはGENERATED ALWAYS AS IDENTITYを使用し、タイムゾーン対応のタイムスタンプとしてTIMESTAMPTZをサポートします。
  • MySQLAUTO_INCREMENTを使用し、ENGINEの指定(通常はInnoDB)が必要です。
  • SQLiteINTEGER PRIMARY KEY AUTOINCREMENTを使用し、ネイティブの日付型がないため日付をTEXTとして保存します。

実践的な例

CREATE TABLE products (
  id SERIAL PRIMARY KEY,
  name VARCHAR(200) NOT NULL,
  price NUMERIC(10, 2) NOT NULL CHECK (price >= 0),
  category_id INT REFERENCES categories(id),
  created_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE TABLEを完全に理解することは、ここで定義するスキーマに他のすべてのSQL操作が依存するため不可欠です。

ユースケース

ECサイトの商品テーブルや認証システムのユーザーテーブルなど、構築中の機能用に新しいデータベーステーブルを設計・作成する必要がある場合。

試してみる — SQL Cheat Sheet

フルツールを開く