演習:データ操作マスター
ストーリー
「INSERT、UPDATE、DELETE、CREATE TABLEを一通り学んだね」
「はい!でもまだ自信がなくて...」
「大丈夫、実際に手を動かして練習すれば身につくよ。今日はミッション形式で一通りやってみよう」
「ミッション形式ですか?やってみます!」
準備
SQLiteを起動
bash
sqlite3 practice.db表示設定
sql
.mode column
.headers on現在のデータを確認
sql
SELECT * FROM employees;
SELECT * FROM products;
SELECT * FROM orders;注意: これまでのステップでデータを変更している場合、表示が異なることがあります。 その場合でも、各ミッションの指示に従って進めてください。
Mission 1: 新しい社員を追加(INSERT)
依頼: 新しい社員「松本さくら」さんが経理部に入社しました。給料は280000円です。
idは既存データと重複しない番号を使ってください。
<details> <summary>ヒント</summary>sql
-- まず現在の最大idを確認
SELECT MAX(id) FROM employees;
-- そのidより大きい番号を使う
INSERT INTO employees (id, name, department, salary) VALUES (?, '松本さくら', '経理部', 280000);sql
-- 現在のデータを確認
SELECT * FROM employees;
-- 最大idを確認
SELECT MAX(id) FROM employees;
-- 新しい社員を追加(idは状況に応じて変更してください)
INSERT INTO employees (id, name, department, salary) VALUES (9, '松本さくら', '経理部', 280000);
-- 結果を確認
SELECT * FROM employees;Mission 2: 商品の価格を更新(UPDATE)
依頼: ノートPC(id=1)の価格が値上がりしました。89000円から95000円に更新してください。
<details> <summary>ヒント</summary>sql
-- まずSELECTで確認してからUPDATE
SELECT * FROM products WHERE id = 1;
UPDATE products SET price = ? WHERE id = 1;sql
-- 更新前を確認
SELECT * FROM products WHERE id = 1;
-- 価格を更新
UPDATE products SET price = 95000 WHERE id = 1;
-- 更新後を確認
SELECT * FROM products WHERE id = 1;出力(更新後):
id name category price stock
-- -------- -------- ----- -----
1 ノートPC 電子機器 95000 15
</details>
Mission 3: 特定の社員の部署を変更(UPDATE)
依頼: 高橋美咲さん(id=4)が人事部から営業部に異動しました。部署を更新してください。
<details> <summary>ヒント</summary>UPDATEでdepartmentカラムを変更します。WHERE句を忘れずに!
</details> <details> <summary>解答</summary>sql
-- 更新前を確認
SELECT * FROM employees WHERE id = 4;
-- 部署を変更
UPDATE employees SET department = '営業部' WHERE id = 4;
-- 更新後を確認
SELECT * FROM employees WHERE id = 4;出力(更新後):
id name department salary
-- -------- ---------- ------
4 高橋美咲 営業部 300000
</details>
Mission 4: 在庫が0の商品を削除(DELETE)
依頼: 在庫が0の商品があれば削除してください。まず在庫0の商品を1つ作ってから削除します。
<details> <summary>ヒント</summary>sql
-- まず在庫0の商品を追加
INSERT INTO products (id, name, category, price, stock) VALUES (?, '廃盤マウスパッド', '電子機器', 500, 0);
-- SELECTで確認してからDELETE
SELECT * FROM products WHERE stock = 0;
DELETE FROM products WHERE stock = 0;sql
-- 在庫0の商品を追加(練習用)
INSERT INTO products (id, name, category, price, stock) VALUES (11, '廃盤マウスパッド', '電子機器', 500, 0);
-- 在庫0の商品を確認
SELECT * FROM products WHERE stock = 0;
-- 削除
DELETE FROM products WHERE stock = 0;
-- 削除されたか確認
SELECT * FROM products WHERE stock = 0;
-- 全商品を確認
SELECT * FROM products;