データベース初心者の基礎知識ブログ -4ページ目

範囲指定は BETWEEN で

年齢などの数値の範囲を指定する場合は BETWEEN を使います。

20100828_02.jpg

こんな手帳があったときに、年齢が20歳から25歳の人を検索してみると、

SELECT * FROM 手帳

WHERE 年齢 BETWEEN 20 AND 25 

となります。

20100828_03.jpg

これを不等号を使って書くと、

SELECT * FROM 手帳

WHERE 20 <= 年齢 AND 年齢 <= 25 

になります。

いわゆる、「20歳以上、25歳以下」という範囲ですね。

「20歳以上、25歳未満」は、不等号を使います。

SELECT * FROM 手帳

WHERE 20 <= 年齢 AND 年齢 < 25 

になります。

20100828_04.jpg

 

 

それじゃない場合は NOT で

WHERE 句で指定する論理演算子は、AND 演算子と、OR 演算子が主に使われます。

でも、もうひとつ重要な演算子があるんですよ。

そうじゃない、といういう意味の、否定の演算子

NOT 演算子

です。

20100825_03.jpg

こんなテーブルの場合、趣味が読書じゃない人を検索する場合は、

SELECT * FROM 手帳

WHERE NOT 趣味 = '車'

と書きます。

20100827_11.jpg

また、括弧を使って AND 演算子や、OR 演算子の否定ってのも作れます。

例えば、趣味が「車」でもないし、名前が「きよし」でもない人を検索する場合は、

SELECT * FROM 手帳

WHERE NOT ( 趣味 = '車' OR 名前 = 'きよし' )

と書きます。

これは、次のように 比較演算子(<>演算子)を使っても書けますよ。

SELECT * FROM 手帳

WHERE 趣味 <> '車' AND 名前 <> 'きよし'

これを「論理式」と言いますが、場合によって使い分けてくださいね。

 

あれもこれもいっぱいの場合は IN で

論理演算子の OR 演算子を使うと、あれもこれも、ということができますが、たくさんあると大変ですよね。

たとえば、

20100825_03.jpg

この手帳から、名前が、「さとし」、「なおと」、「かつや」の行を取り出そうとすると、OR 演算子を使えば次のようになります。

SELECT * FROM 手帳

WHERE 名前 = 'さとし' OR 名前 = 'なおと' OR 名前 = 'かつや'

長くて大変そうですね。3つぐらいだと大丈夫なのですが、10個ぐらいあるとSQL文が長くなりすぎます。

このように OR 演算子が多くなる場合は、IN 演算子を使います。

SELECT * FROM 手帳

WHERE 名前 IN ('さとし', 'なおと', 'かつや' )

こんな風に短く書けます。

※ IN 演算子の項目の数はデータベースによって、上限が決まっているのであまりに条件が多い場合は注意してください。