データベースの基本概念を学んだ皆さん、今度は実際にSQLを書いてみましょう!
環境構築不要でブラウザ上でSQLを気軽に試せる DB Fiddle を使って、SQLの基本操作を実践的に学びます。
目次
- DB Fiddle とは?
- Schema SQL と Query SQL の違い
- 基本操作方法
- 重要:正しい実行方法
- サンプルデータベース作成
- CRUD操作の実践
- よくあるトラブルと解決法
- SQL練習クエリ
- 実習課題
DB Fiddle とは?
DB Fiddle は、登録不要・無料でブラウザ上からSQLを実行できるオンラインツールです。
メリット
- 環境構築不要:すぐにSQLを試せる
- 安全な学習環境:本番データに影響なし
- 簡単リセット:何度でもやり直し可能
- 保存・共有:作成したクエリを保存・共有可能
前回の復習
前回の記事で学んだ CRUD操作 を実際に試してみましょう!
操作 | SQL文 | 説明 |
---|---|---|
Create | INSERT | 新しいデータを追加 |
Read | SELECT | データを取得・表示 |
Update | UPDATE | 既存データを変更 |
Delete | DELETE | 不要なデータを削除 |
Schema SQL と Query SQL の違い
DB Fiddleでは、画面が左右に分かれており、それぞれ異なる目的で使用します。
Schema SQL(スキーマSQL)- 左側の入力欄
「データベースの設計図を作る場所」
用途
- テーブルの作成:CREATE TABLE文でテーブル構造を定義
- 初期データの投入:INSERT文でサンプルデータを用意
- データベースの準備:検索やデータ操作を行う前の下準備
実行タイミング
- 最初に1回だけ実行:データベースの土台を作る
- リセット時に再実行:データベースを初期状態に戻す
例)Schema SQLに書く内容
-- テーブル作成
CREATE TABLE users (
user_id INT PRIMARY KEY,
name VARCHAR(20),
age INT
);
-- 初期データ投入
INSERT INTO users VALUES (1, '田中太郎', 25);
INSERT INTO users VALUES (2, '佐藤花子', 32);
Query SQL(クエリSQL)- 右側の入力欄
「データベースに質問する場所」
用途
- データの検索:SELECT文でデータを取得
- データの更新:UPDATE文でデータを変更
- データの削除:DELETE文でデータを削除
- データの追加:INSERT文で新しいデータを追加
実行タイミング
- 何度でも実行可能:いろいろな条件で検索を試す
- 結果をすぐ確認:実行するたびに結果が下に表示される
例)Query SQLに書く内容
-- 全ての利用者を表示
SELECT * FROM users;
-- 30歳以上の利用者を表示
SELECT name, age FROM users WHERE age >= 30;
-- 新しい利用者を追加
INSERT INTO users VALUES (3, '山田次郎', 28);
使い分けのポイント
項目 | Schema SQL(左側) | Query SQL(右側) |
---|---|---|
目的 | データベースの準備 | データの操作・検索 |
実行頻度 | 最初に1回 | 何度でも |
主な内容 | CREATE TABLE, INSERT(初期データ) | SELECT, UPDATE, DELETE, INSERT(追加データ) |
例え | 図書館の本棚を作って本を並べる | 本棚から本を探したり、借りたりする |
基本操作方法
実行手順
- https://www.db-fiddle.com/ にアクセス
- Database で「MySQL 8.0」を選択
- Schema SQL(左側) にテーブル作成とデータ挿入を記述
- Run ボタンでスキーマを実行
- Query SQL(右側) に検索クエリを記述
- Run ボタンでクエリを実行
画面の見方
┌─────────────────────────────────────────────────────┐
│ DB Fiddle │
├─────────────────┬───────────────────────────────────┤
│ Schema SQL │ Query SQL │
│ (左側) │ (右側) │
│ │ │
│ CREATE TABLE │ SELECT * FROM users; │
│ INSERT INTO │ │
│ ... │ │
├─────────────────┴───────────────────────────────────┤
│ 実行結果 │
│ ┌─────────────────────────────────────────────┐ │
│ │ user_id │ name │ age │ city │ │ │
│ ├─────────────────────────────────────────────┤ │
│ │ 1 │田中太郎 │ 25 │ 東京 │ │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
重要な操作の流れ
- 準備段階:Schema SQLでテーブル作成 → Run実行
- 操作段階:Query SQLでデータ操作 → Run実行
- 確認段階:実行結果を画面下部で確認
- 繰り返し:Query SQLを変更して何度でも実行
DB Fiddleの重要な制限事項
データの永続化について
重要:DB Fiddleでは実際のデータベースは変更されません
-- Query SQLでUPDATEを実行
UPDATE users SET age = 30 WHERE name = '田中太郎';
SELECT * FROM users; -- ✅ 実行結果では変更されて表示
-- しかし、再度同じクエリを実行すると...
SELECT * FROM users; -- ❌ 元の初期データに戻っている
実際の動作
- UPDATE/DELETE実行 → その時の結果表示でのみ反映
- データベース本体 → 変更されない(Schema SQLの初期状態を保持)
- 次回実行時 → 常にSchema SQLの初期データから開始
つまり
操作 | 結果表示 | データベース本体 |
---|---|---|
UPDATE/DELETE | ✅ 一時的に反映 | ❌ 変更されない |
再実行 | 初期データに戻る | 初期状態のまま |
DB Fiddle = SQL文法の学習環境(実際のデータ変更はできません)
この制限により、何度でも安全に同じ操作を練習できるようになっています。
重要:正しい実行方法
よくある失敗パターン
多くの初心者の方が経験する問題があります:
パターン1:別々に実行(うまくいかない場合がある)
-- 1回目の実行
INSERT INTO users (name, age, phone, city)
VALUES ('新田太郎', 30, '090-9999-1111', '横浜');
↓ 実行ボタンを押す
-- 2回目の実行(別のタイミング)
SELECT * FROM users ORDER BY user_id;
↓ また実行ボタンを押す
結果:追加したデータが表示されない場合がある
パターン2:まとめて実行(推奨方法)
-- 新田太郎さんを追加
INSERT INTO users (name, age, phone, city)
VALUES ('新田太郎', 30, '090-9999-1111', '横浜');
-- すぐに確認
SELECT * FROM users ORDER BY user_id;
↓ 一度に実行ボタンを押す
結果:確実にデータが追加され、表示される
なぜ違いが生まれるのか?
DB Fiddleのようなオンライン環境では、セッション管理 という仕組みがあります:
- 別々実行:1回目の実行後、環境がリセットされる可能性がある
- まとめて実行:同じセッション内で連続実行されるため確実
正しい実行方法の原則
✅ 関連する操作はまとめて実行
-- ✅ 推奨:追加と確認をセットで
INSERT INTO users (name, age, phone, city)
VALUES ('佐々木次郎', 28, '080-1234-5678', '神戸');
SELECT * FROM users WHERE name = '佐々木次郎';
✅ 複数テーブルの操作もまとめて
-- ✅ 推奨:利用者追加と同時に貸出記録も作成
INSERT INTO users (name, age, phone, city)
VALUES ('伊藤美咲', 26, '070-9876-5432', '札幌');
INSERT INTO rentals (user_id, book_id, rental_date, return_date)
VALUES (LAST_INSERT_ID(), 1, '2024-07-16', NULL);
-- 結果を確認
SELECT u.name, b.title, r.rental_date
FROM users u
JOIN rentals r ON u.user_id = r.user_id
JOIN books b ON r.book_id = b.book_id
WHERE u.name = '伊藤美咲';
サンプルデータベース作成
用語解説
- テーブル(Table):データを格納する表
- レコード(行):1つのデータ(1人の利用者情報)
- フィールド(列):データの項目(名前、年齢など)
- 主キー(Primary Key):各レコードを一意に識別するID
- 外部キー(Foreign Key):他のテーブルとの関連を示すキー
サンプルデータベース作成
Schema SQL(左側) に以下のコードをコピー&ペーストして Run ボタンを押してください:
-- 図書館管理システム
-- 前回学んだデータベース設計の実践例です!
-- 利用者テーブル
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY, -- 主キー(一意識別子)
name VARCHAR(20) NOT NULL, -- 名前(必須)バーチャーVariable Character 空っぽは許可しない → 必須項目
age INT, -- 年齢
phone VARCHAR(15), -- 電話番号
city VARCHAR(10) -- 都市
);
-- 本テーブル
CREATE TABLE books (
book_id INT AUTO_INCREMENT PRIMARY KEY, -- 主キー
title VARCHAR(30) NOT NULL, -- タイトル(必須)
author VARCHAR(20), -- 著者
price INT, -- 価格
category VARCHAR(15) -- カテゴリ
);
-- 貸出記録テーブル(リレーション例)
CREATE TABLE rentals (
rental_id INT AUTO_INCREMENT PRIMARY KEY, -- 主キー
user_id INT, -- 利用者ID(外部キー)
book_id INT, -- 本ID(外部キー)
rental_date DATE, -- 貸出日
return_date DATE -- 返却日
);
-- 利用者データの挿入(CREATE操作)
INSERT INTO users (name, age, phone, city) VALUES
('田中太郎', 25, '090-1111-2222', '東京'),
('佐藤花子', 32, '080-3333-4444', '大阪'),
('山田次郎', 28, '070-5555-6666', '東京'),
('鈴木美咲', 22, '090-7777-8888', '名古屋'),
('高橋健一', 35, '080-9999-0000', '福岡');
-- 本データの挿入(CREATE操作)
INSERT INTO books (title, author, price, category) VALUES
('プログラミング入門', '山田先生', 2800, 'IT技術'),
('料理の基本', '田中シェフ', 1500, '料理'),
('日本の歴史', '佐藤教授', 3200, '歴史'),
('英語学習法', 'スミス先生', 2100, '語学'),
('健康管理術', '鈴木医師', 1800, '健康'),
('投資の始め方', '高橋アナリスト', 2500, '経済');
-- 貸出記録データの挿入(CREATE操作)
INSERT INTO rentals (user_id, book_id, rental_date, return_date) VALUES
(1, 1, '2024-01-10', '2024-01-24'), -- 田中太郎さんがプログラミング入門を借りて返却
(2, 3, '2024-01-15', NULL), -- 佐藤花子さんが日本の歴史を借りて未返却
(3, 2, '2024-01-20', '2024-02-03'), -- 山田次郎さんが料理の基本を借りて返却
(1, 4, '2024-02-01', NULL), -- 田中太郎さんが英語学習法を借りて未返却
(4, 5, '2024-02-05', '2024-02-19'), -- 鈴木美咲さんが健康管理術を借りて返却
(5, 6, '2024-02-10', NULL); -- 高橋健一さんが投資の始め方を借りて未返却
作成されたテーブル構成
users(利用者)
user_id | name | age | phone | city |
---|---|---|---|---|
1 | 田中太郎 | 25 | 090-1111-2222 | 東京 |
2 | 佐藤花子 | 32 | 080-3333-4444 | 大阪 |
3 | 山田次郎 | 28 | 070-5555-6666 | 東京 |
4 | 鈴木美咲 | 22 | 090-7777-8888 | 名古屋 |
5 | 高橋健一 | 35 | 080-9999-0000 | 福岡 |
books(本)
book_id | title | author | price | category |
---|---|---|---|---|
1 | プログラミング入門 | 山田先生 | 2800 | IT技術 |
2 | 料理の基本 | 田中シェフ | 1500 | 料理 |
3 | 日本の歴史 | 佐藤教授 | 3200 | 歴史 |
4 | 英語学習法 | スミス先生 | 2100 | 語学 |
5 | 健康管理術 | 鈴木医師 | 1800 | 健康 |
6 | 投資の始め方 | 高橋アナリスト | 2500 | 経済 |
rentals(貸出記録)
rental_id | user_id | book_id | rental_date | return_date |
---|---|---|---|---|
1 | 1 | 1 | 2024-01-10 | 2024-01-24 |
2 | 2 | 3 | 2024-01-15 | NULL |
3 | 3 | 2 | 2024-01-20 | 2024-02-03 |
4 | 1 | 4 | 2024-02-01 | NULL |
5 | 4 | 5 | 2024-02-05 | 2024-02-19 |
6 | 5 | 6 | 2024-02-10 | NULL |
CRUD操作の実践
Query SQL(右側) で試してみよう
1. READ操作(SELECT)- データの読み取り
-- 基本的な全データ取得
SELECT * FROM users;
-- 全テーブルのデータを一気に表示
-- === 利用者テーブル ===
SELECT * FROM users;
-- === 本テーブル ===
SELECT * FROM books;
-- === 貸出記録テーブル ===
SELECT * FROM rentals;
-------------------------
-- 特定の列のみ取得
SELECT name, age FROM users;
-- 条件付きで取得
SELECT name, city FROM users WHERE age > 25;
2. CREATE操作(INSERT)- データの作成
-- 新しい利用者を追加して確認(まとめて実行)
INSERT INTO users (name, age, phone, city)
VALUES ('新田太郎', 30, '090-9999-1111', '横浜');
-- すぐに確認
SELECT * FROM users;
3. UPDATE操作 - データの更新
-- 田中太郎さんの年齢を更新して確認(まとめて実行)
UPDATE users
SET age = 26
WHERE name = '田中太郎';
-- すぐに確認
SELECT name, age FROM users WHERE name = '田中太郎';
SELECT * FROM users;
4. DELETE操作 - データの削除
-- 特定の利用者を削除して確認(まとめて実行)
DELETE FROM users WHERE user_id = 4;
-- すぐに確認
SELECT COUNT(*) as 残りの利用者数 FROM users;
SELECT * FROM users;
重要な注意点
-- ❌ 危険:これは全データを削除してしまいます!
DELETE FROM users;
-- ✅ 安全:条件を指定して削除
DELETE FROM users WHERE user_id = 1;
よくあるトラブルと解決法
トラブル1:「追加したデータが表示されない」
原因
- INSERT文とSELECT文を別々に実行している
- セッションが切れている
解決法
-- ✅ まとめて実行する
INSERT INTO users (name, age, phone, city)
VALUES ('解決太郎', 29, '080-1111-9999', '札幌');
SELECT * FROM users WHERE name = '解決太郎';
トラブル2:「There are no results to be displayed.」と表示される
原因と対処法
パターンA:INSERT文の正常実行
-- これは正常です(エラーではありません)
INSERT INTO users (name, age, phone, city)
VALUES ('正常太郎', 31, '070-2222-8888', '福島');
-- ↑ 「結果なし」と表示されるのは正常
パターンB:検索結果が見つからない
-- 存在しないデータを検索した場合
SELECT * FROM users WHERE name = '存在しない人';
-- ↑ この場合も「結果なし」と表示される
トラブル3:文字数制限エラー
原因と対処法
-- ❌ 名前が20文字を超えている
INSERT INTO users (name, age, phone, city)
VALUES ('とても長い名前の人で二十文字を超えてしまった人', 30, '090-1111-2222', '東京');
-- ✅ 文字数を確認して短くする
INSERT INTO users (name, age, phone, city)
VALUES ('長い名前太郎', 30, '090-1111-2222', '東京');
トラブル4:必須項目の未入力
原因と対処法
-- ❌ 名前(必須項目)を入れ忘れ
INSERT INTO users (age, phone, city)
VALUES (25, '090-1111-2222', '東京');
-- ✅ 名前を必ず入力する
INSERT INTO users (name, age, phone, city)
VALUES ('必須太郎', 25, '090-1111-2222', '東京');
SQL練習クエリ
基本検索(初級)
1. 全利用者を表示(READ操作の基本)
-- usersテーブルの全ての列(*)と全ての行を表示
-- *は「全ての列」という意味
SELECT * FROM users;
2. 30歳以上の利用者
-- usersテーブルから名前、年齢、都市の列のみを取得
-- WHERE句で年齢が30歳以上の条件を指定
-- >=は「以上」という意味
SELECT name, age, city
FROM users
WHERE age >= 30;
3. 東京在住の利用者
-- usersテーブルから名前と電話番号の列のみを取得
-- WHERE句で都市が「東京」の条件を指定
-- 文字列の条件はシングルクォート(')で囲む
SELECT name, phone
FROM users
WHERE city = '東京';
4. 本を価格順で表示
-- booksテーブルからタイトル、著者、価格の列を取得
-- ORDER BY句で価格順に並び替え
-- DESCは「降順」(高い順)、ASCは「昇順」(安い順)
SELECT title, author, price
FROM books
ORDER BY price DESC;
条件検索(中級)
5. IT技術または語学の本
-- booksテーブルからタイトル、カテゴリ、価格の列を取得
-- WHERE句でカテゴリが「IT技術」または「語学」の条件を指定
-- IN演算子で複数の値のいずれかに一致する条件を指定
SELECT title, category, price
FROM books
WHERE category IN ('IT技術', '語学');
6. 2000円以下の本
-- booksテーブルからタイトルと価格の列を取得
-- WHERE句で価格が2000円以下の条件を指定
-- <=は「以下」という意味
SELECT title, price
FROM books
WHERE price <= 2000;
7. 利用者数の集計
-- usersテーブルから都市別の利用者数を集計
-- GROUP BY句で都市ごとにグループ化
-- COUNT(*)で各グループの行数をカウント
-- AS user_countで結果の列名を「user_count」に変更
SELECT city, COUNT(*) AS user_count
FROM users
GROUP BY city;
テーブル結合(上級)
8. 貸出中の本と利用者
-- 3つのテーブルを結合して貸出中の本と利用者情報を取得
-- INNER JOINで関連するデータのみを結合
-- u, b, rはテーブルの別名(エイリアス)
-- WHERE句でreturn_dateがNULL(未返却)の条件を指定
SELECT
u.name AS 利用者名, -- usersテーブルの名前を「利用者名」として表示
b.title AS 本のタイトル, -- booksテーブルのタイトルを「本のタイトル」として表示
r.rental_date AS 貸出日 -- rentalsテーブルの貸出日を「貸出日」として表示
FROM rentals r -- rentalsテーブルをメインテーブルとして使用
INNER JOIN users u ON r.user_id = u.user_id -- rentalsとusersをuser_idで結合
INNER JOIN books b ON r.book_id = b.book_id -- rentalsとbooksをbook_idで結合
WHERE r.return_date IS NULL; -- return_dateがNULL(未返却)の条件
9. 田中太郎さんの貸出履歴
-- 田中太郎さんが借りた本の履歴を表示
-- 3つのテーブルを結合して必要な情報を取得
-- WHERE句で特定の利用者(田中太郎)の条件を指定
SELECT
b.title, -- 本のタイトル
b.author, -- 著者名
r.rental_date, -- 貸出日
r.return_date -- 返却日(NULLの場合は未返却)
FROM users u -- usersテーブルから開始
INNER JOIN rentals r ON u.user_id = r.user_id -- usersとrentalsをuser_idで結合
INNER JOIN books b ON r.book_id = b.book_id -- rentalsとbooksをbook_idで結合
WHERE u.name = '田中太郎'; -- 名前が「田中太郎」の条件
10. カテゴリ別貸出回数
-- 本のカテゴリごとの貸出回数を集計
-- booksとrentalsテーブルを結合
-- GROUP BY句でカテゴリごとにグループ化
-- COUNT(*)で各カテゴリの貸出回数をカウント
-- ORDER BY句で貸出回数の多い順に並び替え
SELECT
b.category, -- 本のカテゴリ
COUNT(*) AS 貸出回数 -- 貸出回数をカウント
FROM books b -- booksテーブルをメインテーブルとして使用
INNER JOIN rentals r ON b.book_id = r.book_id -- booksとrentalsをbook_idで結合
GROUP BY b.category -- カテゴリごとにグループ化
ORDER BY 貸出回数 DESC; -- 貸出回数の多い順(降順)で並び替え
実習課題
初級課題(READ操作中心)
課題 1: 年齢フィルタリング
-- usersテーブルから名前と年齢の列のみを取得
-- WHERE句で年齢が25歳未満の条件を指定
-- <は「未満」という意味(25歳は含まない)
SELECT name, age FROM users WHERE age < 25;
課題 2: カテゴリ検索
-- booksテーブルから全ての列(*)を取得
-- WHERE句でカテゴリが「料理」の条件を指定
-- 文字列の比較は完全一致で大文字小文字を区別する
SELECT * FROM books WHERE category = '料理';
課題 3: 価格ソート
-- booksテーブルからタイトルと価格の列を取得
-- ORDER BY句で価格順に並び替え
-- ASCは「昇順」(安い順)、省略可能(デフォルト)
SELECT title, price FROM books ORDER BY price ASC;
中級課題(条件検索と集計)
課題 4: 地域別検索
-- usersテーブルから名前と電話番号の列を取得
-- WHERE句で都市が「大阪」の条件を指定
-- 地域を限定した検索の基本パターン
SELECT name, phone FROM users WHERE city = '大阪';
課題 5: 価格集計
-- booksテーブルから条件に合う本の冊数を集計
-- COUNT(*)で行数をカウント
-- WHERE句で価格が3000円以上の条件を指定
-- AS句で結果の列名を「高額本数」に変更
SELECT COUNT(*) AS 高額本数 FROM books WHERE price >= 3000;
課題 6: NULL値の検索
-- rentalsテーブルから全ての列(*)を取得
-- WHERE句でreturn_dateがNULL(空)の条件を指定
-- IS NULLはNULL値を検索する専用の演算子
-- = NULLは正しく動作しないので注意
SELECT * FROM rentals WHERE return_date IS NULL;
上級課題(JOIN操作)
課題 7: 利用者別集計
-- 各利用者の貸出冊数を集計して表示
-- LEFT JOINで全ての利用者を表示(貸出履歴がない人も含む)
-- GROUP BY句で利用者ごとにグループ化
-- COUNT(r.rental_id)で各利用者の貸出件数をカウント
-- ORDER BY句で貸出冊数の多い順に並び替え
SELECT
u.name, -- 利用者名
COUNT(r.rental_id) AS 貸出冊数 -- 貸出冊数をカウント
FROM users u -- usersテーブルをメインテーブルに
LEFT JOIN rentals r ON u.user_id = r.user_id -- 全ての利用者を含めて結合
GROUP BY u.user_id, u.name -- 利用者ごとにグループ化
ORDER BY 貸出冊数 DESC; -- 貸出冊数の多い順で並び替え
課題 8: 複合条件検索
-- 東京在住で現在本を借りている人を表示
-- INNER JOINで貸出記録がある利用者のみを結合
-- WHERE句で複数の条件をANDで結合
-- DISTINCTで重複する結果を除去(同じ人が複数冊借りている場合)
SELECT DISTINCT u.name, u.city -- 重複を除いて名前と都市を表示
FROM users u -- usersテーブルをメインテーブルに
INNER JOIN rentals r ON u.user_id = r.user_id -- 貸出記録がある利用者のみ結合
WHERE u.city = '東京' -- 都市が「東京」の条件
AND r.return_date IS NULL; -- かつ返却日がNULL(未返却)の条件
課題 9: 最上位検索
-- 最も貸出回数が多いカテゴリを1つだけ表示
-- booksとrentalsテーブルを結合
-- GROUP BY句でカテゴリごとにグループ化
-- COUNT(*)で各カテゴリの貸出回数をカウント
-- ORDER BY句で貸出回数の多い順に並び替え
-- LIMIT 1で結果を1行だけに制限(最上位のみ)
SELECT
b.category, -- 本のカテゴリ
COUNT(*) AS 貸出回数 -- 貸出回数をカウント
FROM books b -- booksテーブルをメインテーブルに
INNER JOIN rentals r ON b.book_id = r.book_id -- rentalsテーブルと結合
GROUP BY b.category -- カテゴリごとにグループ化
ORDER BY 貸出回数 DESC -- 貸出回数の多い順で並び替え
LIMIT 1; -- 結果を1行だけに制限
よく使うSQL構文まとめ
基本構文一覧
構文 | 用途 | 例 |
---|---|---|
SELECT | データ取得 | SELECT name FROM users |
WHERE | 条件指定 | WHERE age > 25 |
ORDER BY | 並び替え | ORDER BY price DESC |
GROUP BY | グループ化 | GROUP BY category |
JOIN | テーブル結合 | INNER JOIN books ON ... |
COUNT() | 件数集計 | COUNT(*) AS total |
IN | 複数条件 | category IN ('IT技術', '料理') |
IS NULL | 空値確認 | return_date IS NULL |
LIKE | 部分一致 | title LIKE '%入門%' |
LIMIT | 件数制限 | LIMIT 5 |
CRUD操作対応表
操作 | SQL文 | 説明 |
---|---|---|
CREATE | INSERT INTO | 新しいデータを追加 |
READ | SELECT | データを取得・表示 |
UPDATE | UPDATE SET | 既存データを変更 |
DELETE | DELETE FROM | 不要なデータを削除 |
学習のコツ
重要ポイント
- 関連操作はまとめて実行 - INSERT後のSELECTは同じタイミングで
- セッションを意識する - オンライン環境では特に重要
- 確認は必須 - データ変更後は必ず結果をチェック
- エラーを恐れない - 失敗から学ぶことが多い
実践的な学習方法
- 実際に手を動かす:理論だけでなく実践が重要
- 結果を確認する:期待通りの結果が出るか必ずチェック
- 繰り返し練習する:同じクエリを何度も実行して慣れる
- トラブルを体験する:エラーの対処法を覚える
まとめ
今回学んだ重要事項
- DB Fiddle は環境構築不要でSQL学習に最適
- Schema SQL でテーブル準備、Query SQL でデータ操作
- 関連操作はまとめて実行 することが成功の鍵
- CRUD操作 の基本からJOINまで段階的に学習可能
次のステップ
- サブクエリ:より複雑な検索条件
- ビュー:よく使うクエリの保存
- インデックス:パフォーマンス向上
- 実際のプロジェクト:学んだスキルを実践で活用
おわりに
DB Fiddle を使えば、今すぐSQLの学習を始められます!
皆さんが体験された「まとめて実行することの重要性」は、実際の開発現場でも とても重要な知識です。この経験を通じて、データベース操作の基本が身についたと思います。
まずは基本的なSELECT文から始めて、徐々に複雑なクエリにチャレンジしてみてください。図書館のデータを使って、日常的なデータ操作を楽しく学んでいきましょう。
今すぐ試してみよう! → https://www.db-fiddle.com/