Oracleデータベースエンジニアとしての実力を証明するORACLE MASTER資格。その入り口であるBronze資格の取得は難しくない。本連載と、同時掲載中の連載「Bronze DBA講座」で合格を目指そう!(参考記事:「Oracle 10g対応のORACLE MASTERとは?」)
本連載第6回「SQLで複数の表からデータを取り出す」、第7回「SQLの外部結合でデータを取り出す」で、複数の表からデータを表示する方法を紹介しました。今回から2回にわたり、副問い合わせによって問い合わせ結果をSQL文の条件に使用する方法について学びましょう。
第8回 SELECT文中のSELECT文、副問い合わせ
1.確認しておきたい内容
2.副問い合わせの位置付け
SELECT文では、WHERE句を使用して行を選択するための条件式が記述できます。これまでに学んだのは値そのものや式を使用した条件でしたが、副問い合わせを使用することで、ほかの問い合わせの結果を条件に使用することができます。いい換えれば副問い合わせとは、SELECT文の中に埋め込まれたSELECT文です。
例えば「指定した従業員の給与と同額の給与を受け取っている従業員を表示する」場合、まずは従業員の給与を問い合わせ、その給与を条件式に使用する必要があります。副問い合わせを使用すれば、この操作が一度にできます。
FROM句で表を指定するのではなく、問い合わせ結果を表に見立てて問い合わせを行う場合も、副問い合わせを使用します。
■問題1
副問い合わせを使用することで__ができるようになる。
上記の__に入る文章を選択しなさい。
a.ほかの問い合わせ結果に基づく問い合わせ
b.NULL値を含む問い合わせ
c.結合する値がなくても結合
d.主キーと外部キーの関係を持つ値の問い合わせ
正解:a
■解説
副問い合わせは、ほかの問い合わせ結果に基づく問い合わせを実行できる文であり(正解a)、別のSELECT文の句に埋め込まれたSELECT文です。通常WHERE句、HAVING句、FROM句などで使用されます。
そのほかの選択肢の不正解の理由は次のとおりです。
■選択肢b:NULL値を含んでいても結合できるのは、外部結合の特徴です。
■選択肢c:結合する値がなくても結合できるのは、外部結合の特徴です。
■選択肢d:主キーと外部キーで結合を行うのは、内部結合の特徴です。
■問題2
1つのSELECT文で結果を表示するため、副問い合わせまたは結合を使用する必要があるタスクを2つ選択しなさい。
a.従業員の名前とその上司の名前を同時に表示する
b.給与が2000ドル以上で部門20に属している従業員を表示する
c.指定した従業員の給与と同じ給与を受け取っている従業員を表示する
d.入社してから3カ月以上経過した従業員を表示する
e.歩合給をもらっていない従業員を表示する
正解:a、c
■解説
Copyright © ITmedia, Inc. All Rights Reserved.