データベース は、「複数のデータが関連し合い、複数人が同時に使い、整合性を保ち、長期間保存される」状況の標準解。Excel の限界を超える瞬間に必要になります。
1. 関係モデルの 3 大要素
- テーブル (リレーション): 行と列の表
- 主キー (Primary Key): 各行を一意に識別する列 (例: user_id)
- 外部キー (Foreign Key): 別テーブルの主キーを参照する列
2. シンプルな例: ECサイト
| users テーブル | — | — |
|---|---|---|
| user_id (PK) | name | |
| 1 | 佐藤 | sato@example.com |
| 2 | 田中 | tanaka@example.com |
| orders テーブル | — | — | — |
|---|---|---|---|
| order_id (PK) | user_id (FK) | product | amount |
| 101 | 1 | ノート PC | 120000 |
| 102 | 1 | マウス | 3000 |
| 103 | 2 | キーボード | 8000 |
3. SQL の基本 4 句
CRUD の基本
SQL
-- 取得 (SELECT)SELECT name, email FROM users WHERE user_id = 1;
-- 追加 (INSERT)INSERT INTO users (name, email) VALUES ('鈴木', 'suzuki@example.com');
-- 更新 (UPDATE)UPDATE users SET email = 'new@example.com' WHERE user_id = 1;
-- 削除 (DELETE)DELETE FROM users WHERE user_id = 1;
-- 結合 (JOIN) — テーブルをまたいで取得SELECT u.name, o.product, o.amountFROM users uJOIN orders o ON u.user_id = o.user_idWHERE u.user_id = 1;
-- 集計 (GROUP BY)SELECT user_id, COUNT(*) as order_count, SUM(amount) as totalFROM ordersGROUP BY user_id;4. SQLite で実演 (Python)
Python 標準ライブラリで DB 操作
Python
import sqlite3
# DB 接続 (なければ新規作成)conn = sqlite3.connect('shop.db')cur = conn.cursor()
# テーブル作成cur.execute(''' CREATE TABLE IF NOT EXISTS users ( user_id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT UNIQUE )''')
# データ追加cur.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('佐藤', 'sato@example.com'))conn.commit()
# 取得cur.execute("SELECT * FROM users")for row in cur.fetchall(): print(row)
conn.close()5. インデックスの威力
インデックス = 検索高速化のための内部データ構造 (B ツリーが主流)。「100 万行から 1 件探す」が インデックスなしで 1 秒、インデックスありで 1ms のような桁違いの差が出ます。
インデックス作成
SQL
-- email 列で頻繁に検索するならインデックスをCREATE INDEX idx_users_email ON users(email);
-- WHERE で使うとインデックスが効くSELECT * FROM users WHERE email = 'sato@example.com';-- → インデックスを使った高速検索 O(log n)
-- インデックスは書込み時にコストがかかる-- 全列にインデックス張ると書込みが遅くなる ← 落とし穴6. トランザクションと ACID
- Atomicity (原子性): 「A から B への送金」のような複数操作を、全部成功 or 全部キャンセル
- Consistency (一貫性): 制約 (主キー・外部キー) が常に守られる
- Isolation (独立性): 同時実行時、互いに干渉しない (READ COMMITTED 等のレベル)
- Durability (永続性): 一度 commit したらクラッシュしても残る
7. 次の話
EP.12 (最終回) では AI 時代の CS として、なぜ今もこれらの基礎が重要かをまとめます。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。