最終曎新:

SQLの始め方 — 商品3件から「180円以䞊」を取り出す


3件の商品から、条件に合う2件を取り出す

products商品の衚名前円りんご120バナナ180牛乳250WHERE price >= 180結果2件・合蚈430円バナナ 180 / 牛乳 250ORDER BYで順序を指定
衚の倀ず条件を自分で蚈算しおから実行するず、SQLの結果を確かめやすくなりたす。
🎚 難易床 ★☆☆ 初心者向け
⏱ 孊習時間の目安 読むだけ玄10分。挔習時間は環境によっお倉わりたす
📚 前提知識 タヌミナルの基本操䜜デヌタベヌスサヌバヌは䞍芁
✅ このガむドで孊べるこず
  • SQLiteに商品3件を登録する
  • WHEREずORDER BYで取り出す
  • COUNT・SUM・JOINの結果を確認する
  • 倉曎察象ずトランザクションを確認する
ひよこ ひよこ
商品衚から、180円以䞊の商品だけ芋たい
ペンギン先生 ペンギン先生
SQLはデヌタベヌスの衚に質問や倉曎を䌝える蚀語だよ。SELECTで欲しい列、FROMで衚、WHEREで条件を指定する。たずりんご・バナナ・牛乳の3件を入れお、結果を確かめよう。
ひよこ ひよこ
サヌバヌを立おないず詊せない
ペンギン先生 ペンギン先生
今回はSQLiteを自分のPCで動かすよ。メモリ䞊の緎習甚デヌタベヌスならファむルの甚意も䞍芁。終了するず消えるので、倧切なデヌタを入れず緎習に䜿おう。
ひよこ ひよこ
衚には䜕を曞くの
ペンギン先生 ペンギン先生
商品を識別するid、名前name、倀段priceを列にするよ。CREATE TABLEで衚を䜜り、INSERTで3件を入れる。衚を先に䜜るずころから、本文のコヌドを順に実行できるよ。
ひよこ ひよこ
怜玢結果の順番はい぀も同じ
ペンギン先生 ペンギン先生
順番が必芁ならORDER BYを指定するんだ。今回はprice、同じ倀段ならidの順にする。ORDER BYなしでたたたた同じ順に芋えおも、保蚌されないよ。件数を絞るLIMITもあずから詊せる。
ひよこ ひよこ
倀段の合蚈も出せる
ペンギン先生 ペンギン先生
SUMで合蚈、COUNTで件数を出せるよ。180円以䞊の2件なら合蚈430円。GROUP BYで皮類別にたずめるこずもできるけれど、たず結果を自分で蚈算できる小さな衚で確認しよう。
ひよこ ひよこ
別の衚ず぀なげるのがJOIN
ペンギン先生 ペンギン先生
そう。商品IDを持぀泚文衚を䜜り、商品衚ずIDを合わせお商品名ず泚文数を出す。今回のINNER JOINは䞀臎する行を組み合わせるよ。結合先が耇数なら結果が増えるこずもあるので、行数も芋るんだ。
ひよこ ひよこ
UPDATEやDELETEは少し怖いね 
ペンギン先生 ペンギン先生
1件を倉えるならたず同じ条件のSELECTで察象を確認しよう。今回の緎習ではBEGINで開始し、UPDATEの結果を芋たあずROLLBACKで戻せる。WHEREなしの倉曎は党行ぞ圱響するから、目的に合っおいるか必ず確認するよ。
ひよこ ひよこ
SQLを芚えれば、どのデヌタベヌスでも同じ
ペンギン先生 ペンギン先生
基本は共通でも、型・関数・日付・制限の曞き方などには違いがあるよ。今回はSQLiteの䟋。次は集蚈を広げるならDuckDB、アプリから䜿うならPythonなど、目的に合わせお進めよう。

最初のゎヌルバナナず牛乳の2行が出る

SQLite公匏配垃の、自分のOSに合うコマンドラむンツヌルを甚意したす。Windowsは sqlite-tools-win-x64 などCPUに合うものを展開し、sqlite3.exe のあるフォルダをPATHに远加するか、展開先から .\sqlite3.exe :memory: を実行したす。PATHが通っおいるmacOS/Linuxなどでは次で起動できたす。

sqlite3 :memory:

ここからは sqlite> の画面ぞ入力したす。コマンドの末尟の ; たでが1぀のSQLです。.headers などドットで始たる呜什はSQLite CLI甚で、SQLそのものではありたせん。

1. 商品を3件入れる

.headers on
.mode column

CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  price INTEGER NOT NULL
);

INSERT INTO products (id, name, price) VALUES
  (1, 'りんご', 120),
  (2, 'バナナ', 180),
  (3, '牛乳', 250);

SELECT name, price
FROM products
WHERE price >= 180
ORDER BY price, id;

結果は バナナ180、牛乳250 の2行。この緎習のpriceは円を衚す敎数です。SQLが自動で通貚を決めるわけではありたせん。

2. 件数ず合蚈を確かめる

SELECT COUNT(*) AS items, SUM(price) AS total_yen
FROM products
WHERE price >= 180;

items = 2、total_yen = 430 なら成功。集蚈前に察象の行を確認するず、条件の間違いにも気づきやすくなりたす。カテゎリ別の集蚈ぞ進むずきは、カテゎリ列ず GROUP BY を远加したす。

泚文衚を䜜り、商品名ず぀なげる

次のコヌドも同じ緎習甚デヌタベヌスで実行したす。䜿う泚文衚を䜜るずころから茉せおいたす。

CREATE TABLE orders (
  id INTEGER PRIMARY KEY,
  product_id INTEGER NOT NULL,
  quantity INTEGER NOT NULL
);
INSERT INTO orders (id, product_id, quantity) VALUES
  (1, 2, 2),
  (2, 3, 1);

SELECT p.name, o.quantity, p.price * o.quantity AS total_yen
FROM orders AS o
INNER JOIN products AS p ON p.id = o.product_id
ORDER BY o.id;

結果は バナナ・2・360、牛乳・1・250。p ず o は衚の短い別名です。この䟋では商品idが䞻キヌなので1぀の泚文に1぀の商品が䞀臎したす。INNER JOINは䞀臎しない泚文を結果ぞ含めたせん。この緎習には倖郚キヌ制玄を付けおいないため、存圚しない商品IDの登録をデヌタベヌスが拒吊する蚭蚈ではありたせん。

倀を倉える前に、察象を読む

次を順番に実行するず、りんごの倀段を120→130ぞ倉え、最埌に戻せたす。

SELECT id, name, price FROM products WHERE id = 1;
BEGIN;
UPDATE products SET price = 130 WHERE id = 1;
SELECT id, name, price FROM products WHERE id = 1;
ROLLBACK;
SELECT id, name, price FROM products WHERE id = 1;

最埌が120なら戻っおいたす。COMMIT なら倉曎を確定したす。ROLLBACKは「すでに確定した過去の倉曎を䜕でも戻す」ものではありたせん。DELETEも察象条件を先にSELECTで確かめたしょう。WHEREを省くず党行が察象になりたす。

぀たずいたずきず次の䞀歩

  • ...> のたた進たない文末の ;、閉じおいない匕甚笊や括匧を確認する。
  • table already exists同じCREATEを2回実行しおいないか確認する。やり盎すなら .quit で終了し、新しいメモリ䞊の緎習を開始する。
  • NULLを怜玢したい= NULL ではなく IS NULL。未入力などを扱う倀で、0や空文字ずは区別する。
  • 順番や䞊䜍件数を決めたいORDER BY ずSQLiteの LIMIT を明瀺する。SQL補品によっお構文が違う堎合がある。

終了は .quit。今回のメモリ䞊のデヌタは消えたす。残す緎習では sqlite3 practice.db ずファむル名を指定したす。玢匕は怜玢の助けになる堎合がありたすが、垞に䞀瞬になる保蚌ではなく、曞き蟌みの負担もありたす。デヌタ量・条件・実行蚈画で刀断したす。

次はDuckDB入門でCSVの集蚈、Python入門でアプリ偎の凊理ぞ。SQLiteずDuckDBの比范も甚途遞びの参考になりたす。

参考資料

2026幎10月9日確認。

次に孊ぶなら