SQL文をきれいに書く(BETWEEN演算子、IN演算子)
単一カラムの範囲検索
まずは以下のようなケースを想像してみましょう。
もしあなたが、ageが21以上24以下のuserを探したいとします。
そうしたとき、ここまでで学んだ知識を使うと以下のようなSQL文を書くことが出来ます。
1 2 3 4 |
SELECT *
FROM users
WHERE 21 <= age AND age <= 24
-- ageが21以上かつ24以下
|
ハイフンを2つ使用して-- コメント
と書くと、SQL文として実行されないコメントを残すことが出来ます。
さて、このとき"age"という言葉を2回書いてしまっているのは少し冗長ですよね。
こういった範囲指定をする際に使える演算子があります。
BETWEEN演算子
BETWEEN
演算子は1つのカラムに対し上限と下限を指定して式を作り、カラムの値がその範囲に含まれるとき、その式は正になるという演算子です。
1 |
WHERE カラム名 BETWEEN 下限 AND 上限
|
実際に先ほどのageが21以上24以下のuserという条件を、BETWEEN
演算子を使って書き直し、実行してみましょう。
SequelProで以下のSQL文を実行してください
1 2 3 |
SELECT *
FROM users
WHERE age BETWEEN 21 AND 24
|
以下のように結果が表示されていれば正常にSQL文が実行出来ています。
単一カラムのリスト検索
今度はこういったケースを想像してみましょう。
あなたはprefectureが"東京都"もしくは"神奈川県"であるuserを探したいとします。
ここまでの知識でそれを実装しようとすると、OR
演算子を使って以下のようにSQL文を書くことが出来ます。
1 2 3 |
SELECT *
FROM users
WHERE prefecture = "東京都" OR prefecture = "神奈川県"
|
このときもまた、"prefecture"という言葉を2回書いてしまっているところが冗長と言えます。
こういった場面ではリスト検索をしてあげると良いでしょう。
IN演算子
IN
演算子は1つのカラムに対しリストを指定して、カラムの値がそのリストに含まれるとき、その式は正になるという演算子です。
1 2 |
WHERE カラム名 IN (値1, 値2, ……)
-- (値1, 値2, ……)の部分がリストとなります
|
ここでも実際に先ほどの、prefectureが"東京都"もしくは"神奈川県"であるuserという条件を書きなおしてみましょう。
SequelProで以下のSQL文を実行してください
1 2 3 |
SELECT *
FROM users
WHERE prefecture IN ("東京都", "神奈川県")
|
以下のように結果が表示されていれば正常にSQL文が実行出来ています。