問 題
次の ㋐ ~ ㋓ の SQL 文のうち、A 表及び B 表から C 表を得ることができるもののみを全て挙げているのはどれか。
1.㋐、㋑、㋒
2.㋐、㋒、㋓
3.㋐、㋓
4.㋑、㋒
5.㋑、㋓
解 説
【SQL の基礎知識】
SQL:Structure Query Language 構造化照会言語 は、データベースを操作するための言語です。
基本文が select from where 文です。「select ◯◯ from △ where 条件」で、△から 条件を満たす ◯◯列のデータ を取ってこい といった感じです。また「create 名前」で、新しい表形式のデータベースを作れます。「新規ファイル作成」のイメージです。
㋐ ~ ㋓ の SQL で select 文は共通です。「select 所属名、役職、職員番号」なので、所属名、役職、職員番号の列のデータを取ってこい という文になっています。from 文も共通なので、A 表、B 表の2つを見てこい という文と考えればよいです。
㋐ の where 文ですが、AND で結ばれた 2 つの条件があります。1 つ目が「A 表. 所属コード = B 表. 所属コード」なので、所属コード「202,301」のものだけをとってきてね、という条件と読み替えられます。
2 つ目が「A 表. 職員番号 NOT IN(100003,100006)」とあるので、職員番号が 100003、100006 だったら、データとってこなくていいよ という条件です。
すると、職員番号 100001,100002,100005 の所属名、役職、職員番号が データベースから抜き出されるので、C 表を得ます。㋐ は妥当です。
㋑ ですが
A 表における所属コード < 500 という条件は A 表において所属コードが全て 500 よりも小さいことから、意味のない条件です。そのため、㋐ において、2 つ目の条件がないのと同じ SQL 文となっています。従って、職員番号 100001,100002,100003,100005,100006 の所属名、役職、職員番号が データベースから抜き出されるので、C 表を得ません。㋑ は誤りです。これで正解は 2 or 3 です。㋓ は妥当とわかりました。
㋒ ですが
A表.職員番号 < 100002 とあるので、100002 が抜き出されません。そのため C 表を得ません。㋒ は誤りです。
以上より、正解は 3 です。
コメント