2020年 国家一般職(電気・電子・情報) No.39解説

 問 題     

次の ㋐ ~ ㋓ の SQL 文のうち、A 表及び B 表から C 表を得ることができるもののみを全て挙げているのはどれか。

1.㋐、㋑、㋒
2.㋐、㋒、㋓
3.㋐、㋓
4.㋑、㋒
5.㋑、㋓

 

 

 

 

 

正解 (3)

 解 説     

【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 です。




コメント