SQL攻略 - Web上でSQLを実行しながらマスターするサイト
English ver [4 Basics of SELECT statement (2)] is here.
ホーム >> SQL攻略 - SELECT文の基本(2)

SELECT文の基本(2)

WHERE句を使い条件に合致したレコードを選択する方法を学習します。

1.WEHRE句を使ったレコードの選択の仕方

--SAL(給与)が2000以上のレコードを選択
SELECTENAME,JOB,SAL
FROMEMP
WHERESAL >= 2000
■比較演算子の種類

WEHRE句の後ろに条件式を記述することで、条件に合致したレコードのみを選択することができます。WHEREの条件に使用可能な比較演算子は以下の通りです。

=左辺が右辺と等しい
<左辺が右辺より小さい
<=左辺が右辺以下
>左辺が右辺より大きい
>=左辺が右辺以上
<>左辺と右辺が等しくない

■実習

それでは実習です。2題出題します。

2.複合条件によるレコード選択

--JOBが'CLERK'かつSALが1000以上の従業員を選択
SELECTENAME,JOB,SAL
FROMEMP
WHEREJOB = 'CLERK' AND SAL >= 1000
■論理演算子の種類

複合条件でレコードを選択する場合は論理演算子を使用します。

ANDかつ
ORまたは
NOT否定

■論理演算子の使い方

JOB = 'CLERK' AND SAL >= 1000であればJOB = 'CLERK'かつSAL >= 1000の条件を満たしたレコードが選択されます。条件式を否定する場合は NOT JOB = 'CLERK'のように条件式の前にNOTを記述します。

■優先順位

論理演算子には優先順位があり、NOT、AND、ORの順で演算されます。(カッコ)を使うことで、演算の優先順位付けを行うことが可能です。

それでは実習です。2題出題します。


3.SELECT文の過去問題

初級システムアドミニストレータ午前 平成7年問35
次の表”成績”は,英語,国語,数学の3科目の試験結果を収めたものである。 3科目の平均の点数が65点以上の生徒の名前を求めるSQL文として,適切なものは どれか。

表 成績
番号名前英語国語数学
3011佐藤567060
2023鈴木706580
3047田中807050
3066中村708075

SELECT 番号 FROM 成績
WHERE 英語 > 65 OR 国語 > 65 OR 数学 > 65

SELECT 番号 FROM 成績
WHERE 英語 >= 65 AND 国語 >= 65 AND 数学 >= 65

SELECT 名前 FROM 成績
WHERE 英語 >= 65 OR 国語 >= 65 OR 数学 >= 65

SELECT 名前 FROM 成績
WHERE 英語 + 国語 + 数学 > 195

SELECT 名前 FROM 成績
WHERE 英語 + 国語 + 数学 >= 195
正解



解説

この問題は以下のように解いていけばよいでしょう。

1.SELECTのあとの表示する項目をチェックする。
ここでは「生徒の名前」を求めるのでアとイは番号となっているので候補からはずします。

2.WHERE条件が正しいかをチェックする。
ウは平均点が65点以上じゃなくても、どれか一つでも65点以上だと選択されるのでダメです。

エの場合は、WHERE 英語 + 国語 + 数学 > 195となっていて平均点が65点より大きい生徒が選択されます。

オはWHERE 英語 + 国語 + 数学 >= 195で平均点が65点以上の生徒が選択されますね。よってオが正解です。

これで [SELECT文の基本(2)] は終了です。