基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成18年 春期 基本情報技術者 午後 問01
問01   関係データベースに関する記述

関係データベースに関する次の記述を読んで,設問1,2に答えよ。

ある会社には,次の社員表,家族表からなる関係データベースがある。

設問1 SQL 文 @ と SQL 文 A を実行した結果について,次の記述中の に入れる正しい答えを,解答群の中から選べ。

SQL 文 @

SELECT 社員ID FROM 社員表
WHERE 年齢 > (SELECT AVG(年齢) FROM 家族表) ORDER BY 社員ID

SQL 文 A

SELECT 社員ID FROM 社員表
WHERE 年齢 > (SELECT AVG(年齢) FROM 家族表
WHERE 家族表.社員ID = 社員表.社員ID) ORDER BY 社員ID

SQL 文 @ を実行した結果は となる。

SQL 文 A を実行した結果は となる。

解答群

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

基本情報技術者試験


設問2 SQL 文 B と同じ実行結果が得られると考え,SQL 文 C を実行したところ, 異なる結果が得られた。 その理由を説明する次の記述中の に入れる正しい答えを, 解答群の中から選べ。

SQL 文 B

SELECT 社員ID FROM 社員表
WHERE 年齢 < (SELECT MIN(年齢) FROM 家族表
WHERE 家族表.社員ID = 社員表.社員ID)

SQL 文 C

SELECT 社員ID FROM 社員表
WHERE 年齢 < ALL (SELECT 年齢 FROM 家族表
WHERE 家族表.社員ID = 社員表.社員ID)

SQL 文 C の限定子 ALL を使った限定比較の場合には, 社員も抽出されるが,SQL 文 B のように集合関数と比較述語を使った場合は, 社員は抽出されない。 つまり,SQL 文 C の実行結果には,次の SQL 文 D によって抽出される社員も併せて抽出されることになる。

SQL 文 D

SELECT 社員ID FROM 社員表 WHERE

c に関する解答群

ア 家族がいない      イ 家族がいる

d に関する解答群

ア EXISTS (SELECT * FROM 家族表)

イ NOT EXISTS (SELECT * FROM 家族表)

ウ EXISTS
   (SELECT * FROM 家族表 WHERE 家族表.社員ID = 社員表.社員ID)

エ NOT EXISTS
   (SELECT * FROM 家族表 WHERE 家族表.社員ID = 社員表.社員ID)

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]