取り出す・絞り込む

INPUT · スライド

WHEREで絞り込もう

01 / 06

行を絞り込みたい

SELECT は全行を取り出していたね。でも「600円以下のメニューだけ」「めん類だけ」のように、条件に合う行だけほしいことのほうが多い。

JSの if 文にあたる仕事をするのが WHERE だよ。

02 / 06

WHEREの形

SELECT ... FROM ... WHERE 条件; と、FROM のあとに条件を足すよ。

文字の値は '(シングルクォート)で囲むのがSQLのルール。JSの " と違うから注意!

SELECT * FROM menus WHERE category = 'めん';

実行結果

きつねうどん と しょうゆラーメン の2行だけが取り出される

03 / 06

数値の比較

数値の条件には比較演算子が使えるよ。

  • price < 600 … 600より安い
  • price <= 600 … 600以下
  • price > 600 … 600より高い

JSと似ているけど、「等しい」は === ではなく = 1つなのが大きな違い。

SELECT name, price FROM menus WHERE price <= 600;

04 / 06

等しくないは <>

「等しくない」は <> と書くよ(!= も使える)。

WHERE で行を絞り、SELECT で列を絞る。行と列、両方を自分で選べるようになったね。

SELECT name FROM menus WHERE category <> 'めん';

05 / 06

文字は必ずクォートで囲む

WHERE category = めん; のようにクォートを忘れると、SQLは めん を「値」ではなく「カラムの名前」だと思ってしまい、エラーになる。

数値はそのまま書けるけれど、文字は必ず ' で囲む。この違いを忘れないようにしよう。

-- ダメな例(クォートが無い)SELECT * FROM menus WHERE category = めん;-- 正しい例SELECT * FROM menus WHERE category = 'めん';

06 / 06

頭の中では WHERE が先に働く

SELECT name FROM menus WHERE ... は左から右に読みたくなるけれど、コンピュータの中で実際に動く順番は少し違う。

先に FROM でテーブルを決め、次に WHERE で行を絞り、最後に SELECT で見せる列を選ぶ。「まず絞ってから、見せたい列だけ取り出す」という順番で考えると、複雑な条件を書くときにも迷いにくくなるよ。