適切な型と、データを守る NOT NULL、UNIQUE、PRIMARY KEY 制約を使って、自分自身のテーブルを設計しましょう。
このレッスンを Kodokon で開くここまでは出来合いのテーブルに問い合わせてきました。プロの開発者はそれらを設計します。良いスキーマは、挿入の時点で不正なデータを拒みます。どんなアプリケーションのコードよりも前にある、あなたの第一の防衛線です。sqliteonline.com か sqlite3 で、このテーブルを作りましょう。
CREATE TABLE users (
id INTEGER PRIMARY KEY,
email TEXT NOT NULL UNIQUE,
username TEXT NOT NULL UNIQUE,
created_at TEXT NOT NULL
DEFAULT (datetime('now'))
);SQLiteは五つの保存型しか知りません。INTEGER、REAL、TEXT、BLOB、NULL です。日付はそこにISO形式(2026-07-04)の TEXT として保存されます。他のところ(PostgreSQL、MySQL)では、代わりに VARCHAR(255)、TIMESTAMP、BOOLEAN と宣言するでしょう。原理は同じで、型の名前が変わるだけです。では、制約をテストしてみましょう。
INSERT INTO users (email, username)
VALUES ('alice@example.com', 'alice');
INSERT INTO users (email, username)
VALUES ('alice@example.com', 'alice2');主キーは各行を識別します。決してNULLにならず、重複せず、テーブルにつき一つだけです。SQLiteでは、INTEGER PRIMARY KEY に貴重な特徴があります。上の挿入のように値を省くと、列が自動的に増えていくのです。PostgreSQLなら GENERATED ALWAYS AS IDENTITY、MySQLなら AUTO_INCREMENT と書くでしょう。最後に、CHECK で業務上のルールを加えましょう。
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
sku TEXT NOT NULL UNIQUE,
price REAL NOT NULL CHECK (price >= 0)
);
INSERT INTO products (name, sku, price)
VALUES ('Keyboard', 'KB-01', -5);