本文へスキップ
BecomeCoder

SQL テーブル設計 (DDL)コース · 第1章 テーブルを設計する · レッスン4

データ型と CREATE TABLE ― テーブルを作る

ブラウザで完結

導入

まずは自分でテーブルを作る基本、CREATE TABLE から。「どんな列を、どんな種類の値で持つか」を決めるのが設計の第一歩です。

説明

テーブルは CREATE TABLE で作ります。「テーブル名」と、「列の名前+データ型」の並びを指定します。

CREATE TABLE suppliers (
  id    INTEGER PRIMARY KEY,
  name  TEXT NOT NULL,
  phone TEXT
);

各列に付いている INTEGER TEXT などがデータ型です。その列にどんな種類の値が入るかを表明します。SQLite の代表的な型は次の5つです。

用途
INTEGER整数年齢、個数、ID
REAL小数(浮動小数点)価格、割合
TEXT文字列名前、住所、日付文字列
BLOBバイナリ(画像など)ファイルデータ
NULL値が無い状態未入力の欄

型を決めることには2つの意味があります。ひとつは「その列に何が入るかを読み手に伝える」設計上の約束。もうひとつは「変な値を弾く」歯止めです。

flowchart LR
    D["データ型を宣言する"] --> M1["意図が伝わる<br/>age は数字、name は文字列"]
    D --> M2["不正値を防ぐ<br/>数値列に文字が入りにくい"]
    D --> M3["適切に保存・比較できる<br/>数値は数値として大小比較"]

SQLite は型に比較的ゆるく、宣言と違う値も格納できてしまいます(型アフィニティという仕組み)。とはいえ設計として型を書くことは重要です。MySQL や PostgreSQL では型はもっと厳密で、VARCHAR(50)(最大50文字)・DATEBOOLEANTIMESTAMP など種類も豊富です。

作ったテーブルは最初は空です。INSERT で行を追加し、SELECT で確認できます。

INSERT INTO suppliers (id, name, phone) VALUES (1, '山田商事', '03-1234-5678');
SELECT * FROM suppliers;

やってみよう

初期表示の CREATE TABLE suppliers ... を実行し、「返却行なし」と出れば成功です。続けて上の INSERTSELECT を実行し、作ったテーブルにデータが入ることを確認しましょう。

演習

次の3つの列を持つ books テーブルを作ってください。id(整数・主キー)、title(文字列・NOT NULL)、price(整数)。

ヒント1を見る

CREATE TABLE books ( ... ); の中に、列名 型 をカンマ区切りで3つ並べます。

ヒント2を見る

CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT NOT NULL, price INTEGER);

実際に動かしてみよう

下のエディタにクエリを書いて「実行」を押すと、ブラウザ内のSQLiteで結果が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう。

SQL — ブラウザ内で実行(SQLite)

ブラウザ内でSQLを動かす環境(SQLite)を読み込みます(初回のみ一瞬)。
スクロールして表示された時点でも自動で読み込まれます。