クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

条件に合う行を取り出す

このレッスンのあとで: SQLを使って、条件に合う行を取り出すことができる。

45分のレッスンコマンドなし

遅れている荷物はどれか

あなたは大阪の物流会社「浪速ロジ」で、問い合わせ窓口を担当しています。

朝礼で、課長から指示がありました。「遅れている荷物の届け先に、先に連絡してください」。

今日の荷物は8件なので、目で探せます。年末には一日に数千件になります。そこで、データベースに「遅延の行だけ」を出してもらいます。

このレッスンのゴール

メモ

SQLを使って、条件に合う行を取り出すことができる。

キーワード

ことばいみれい
テーブル行と列でデータを保存する表です。shipments
行ひとまとまりの記録です。ここでは荷物1件です。
列どの行にもある項目です。status
クエリデータベースへの問いかけです。
SQLクエリを書くための言語です。
条件行ごとに合うか合わないかを決める式です。status = '遅延'

学生が入力するセルは、このプレビューでは空白です。

SELECTは列を選ぶ

クエリは、ほとんどが SELECT から始まります。後ろに、見たい列を書きます。

FROM の後ろには、テーブルの名前を書きます。* は「すべての列」という意味です。

テーブルや列の名前は、職場でも英語で付けることが多いです。海外のメンバーやツールでも読めるからです。ここでも shipments や status を使います。

試そう: 列を選ぶ

コード: sql
-- すべての列を表示します。
SELECT * FROM shipments;

-- 届け先と市だけを表示します。
SELECT customer, city FROM shipments;

-- 2つ目のクエリに status を足して、もう一度実行してください。

WHEREは行を選ぶ

WHERE は FROM の後ろに書き、条件を付けます。

データベースは、1行ずつ条件を調べます。合う行だけを残し、合わない行は出しません。

文字はシングルクォートで囲みます。例えば '遅延' です。数は囲みません。例えば weight_kg > 10 です。比べる記号には =、>、<、>=、<= があります。

試そう: 遅延だけを出す

コード: sql
-- 遅延している荷物だけを取り出します。
-- 文字は、シングルクォートで囲みます。
SELECT id, customer, city
FROM shipments
WHERE status = '遅延';

-- '遅延' を '配達済み' に変えて、もう一度実行してください。

例: 1行ずつ条件を調べる

荷物重さweight_kg > 10 か結果
1 丸山商店12kgはい残る
2 北浜クリニック3kgいいえ出さない
3 堺刃物工房25kgはい残る
4 カフェ六甲8kgいいえ出さない
5 京町家ホテル40kgはい残る

学生が入力するセルは、このプレビューでは空白です。

ANDとORで条件をつなぐ

AND でつなぐと、2つの条件の両方に合う行だけが残ります。

OR でつなぐと、どちらか一方に合えば残ります。

次のブロックを実行して、2つの結果を比べてください。AND のほうが条件が厳しいので、行は少なくなります。

試そう: 2つの条件

コード: sql
-- 大阪市あての、10kgより重い荷物です。
SELECT id, customer, weight_kg
FROM shipments
WHERE city = '大阪市' AND weight_kg > 10;

-- 神戸市あて、または奈良市あての荷物です。
SELECT id, customer, city
FROM shipments
WHERE city = '神戸市' OR city = '奈良市';

よくある間違い

注意

「神戸市と奈良市の荷物」と言われると、AND で書きたくなります。これは間違いです。1件の荷物の届け先が、2つの市であることはありません。だから AND では0行になります。どちらかの市に合う行がほしいときは、OR を使います。

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。