データ操作(全64問中50問目)

T1表とT2表が,次のように定義されているとき,次のSELECT文と同じ検索結果が得られるSELECT文はどれか。
66.gif

出典:平成19年春期 問66

  • 66a.gif
  • 66i.gif
  • 66u.gif
  • 66e.gif
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データ操作
解説
設問のCREATE TABLE文で定義される関係スキーマは以下の通りです。
  • T1(SNO,SNAME)
  • T2(CODE,SNO,SURYO)
この2つの関係に対して適用する〔SELECT文〕は、2つの関係をSNO列で結合した中間表をT1.SNAMEの昇順に整列し、T1.SNAME列だけを抜き出します(DISTINCTにより重複行は除かれます)。つまりSQL文を実行すると、T1表とT2表の両方に存在するSNOを含む行について、そのSNAMEを昇順に整列した結果が返されます。
  • 正しい。IN句のSELECT文は、T2に存在するSNOの集合を返しています。T1の各行について、その行がSNOがT2にも存在するものだけをWHERE句で絞り、それを昇順に整列しているため同じ結果が返されます。
  • IN句のSELECT文は、T1に存在するSNOの集合を返しています。このWHERE句の結果は常に真となるため、T1の全ての行が選択される(T2に存在しないSNOを含む行を排除できない)ので誤りです。
  • T1の行のうち、T2に存在しないSNOを持つ行だけが選択されます。したがって誤りです。
  • ORDER BY句で「T2.SNAME」を指定していますが、T2表にSNAMEは存在しないので構文エラーです。

Pagetop