範囲指定は BETWEEN で
年齢などの数値の範囲を指定する場合は BETWEEN を使います。
こんな手帳があったときに、年齢が20歳から25歳の人を検索してみると、
SELECT * FROM 手帳
WHERE 年齢 BETWEEN 20 AND 25
となります。
これを不等号を使って書くと、
SELECT * FROM 手帳
WHERE 20 <= 年齢 AND 年齢 <= 25
になります。
いわゆる、「20歳以上、25歳以下」という範囲ですね。
「20歳以上、25歳未満」は、不等号を使います。
SELECT * FROM 手帳
WHERE 20 <= 年齢 AND 年齢 < 25
になります。
それじゃない場合は NOT で
WHERE 句で指定する論理演算子は、AND 演算子と、OR 演算子が主に使われます。
でも、もうひとつ重要な演算子があるんですよ。
そうじゃない、といういう意味の、否定の演算子
NOT 演算子
です。
こんなテーブルの場合、趣味が読書じゃない人を検索する場合は、
SELECT * FROM 手帳
WHERE NOT 趣味 = '車'
と書きます。
また、括弧を使って AND 演算子や、OR 演算子の否定ってのも作れます。
例えば、趣味が「車」でもないし、名前が「きよし」でもない人を検索する場合は、
SELECT * FROM 手帳
WHERE NOT ( 趣味 = '車' OR 名前 = 'きよし' )
と書きます。
これは、次のように 比較演算子(<>演算子)を使っても書けますよ。
SELECT * FROM 手帳
WHERE 趣味 <> '車' AND 名前 <> 'きよし'
これを「論理式」と言いますが、場合によって使い分けてくださいね。
あれもこれもいっぱいの場合は IN で
論理演算子の OR 演算子を使うと、あれもこれも、ということができますが、たくさんあると大変ですよね。
たとえば、
この手帳から、名前が、「さとし」、「なおと」、「かつや」の行を取り出そうとすると、OR 演算子を使えば次のようになります。
SELECT * FROM 手帳
WHERE 名前 = 'さとし' OR 名前 = 'なおと' OR 名前 = 'かつや'
長くて大変そうですね。3つぐらいだと大丈夫なのですが、10個ぐらいあるとSQL文が長くなりすぎます。
このように OR 演算子が多くなる場合は、IN 演算子を使います。
SELECT * FROM 手帳
WHERE 名前 IN ('さとし', 'なおと', 'かつや' )
こんな風に短く書けます。
※ IN 演算子の項目の数はデータベースによって、上限が決まっているのであまりに条件が多い場合は注意してください。