T1表とT2表が、次のように定義されているとき、次のSELECT文と同じ検索結果が得られるSELECT文はどれか。
[T1表の定義]
CREATE TABLE T1 (SNO CHAR(6) PRIMARY KEY, SNAME CHAR(20))
[T2表の定義]
CREATE TABLE T2 (CODE CHAR(4), SNO CHAR(6), SURYO INT)
[SELECT文]
SELECT DISTINCT T1.SNAME
FROM T1, T2
WHERE T1.SNO=T2.SNO
ORDER BY T1.SNAME
ア |
SELECT DISTINCT SNAME
FROM T1
WHERE SNO IN (SELECT SNO FROM T2)
ORDER BY SNAME |
イ |
SELECT DISTINCT SNAME
FROM T1
WHERE T1.SNO IN (SELECT SNO FROM T1)
ORDER BY SNAME |
ウ |
SELECT SNAME
FROM T1
WHERE SNO NOT IN (SELECT SNO FROM T2)
ORDER BY SNAME |
エ |
SELECT T2.SNAME
FROM T1, T2
WHERE T1.SNO=T2.SNO
ORDER BY T2.SNAME |
答え ア
【解説】
問題のSQL文について
SELECT DISTINCT T1.SNAME
FROM T1, T2
WHERE T1.SNO=T2.SNO
ORDER BY T1.SNAME
は
- 「SELECT DISTINCT T1.SNAME」は、SELECT文を実行した結果、同じデータ(T1.SNAME)が複数ある場合に重複データを出力しないという意味です。
- 「FROM T1, T2」は、T1とT2の表からという意味です。
- 「WHERE T1.SNO=T2.SNO」は、T1とT2で同じSNOを持ったデータを抜き出すという意味です。
- 「ORDER BY T1.SNAME」は、T1.SNAMEでソートするという意味です。
ア |
これの結果は問題文と同じになります。
「WHERE SNO IN (SELECT SNO FROM T2)」は、T2のSNOの中にもある、T1のSNOを取り出すという意味で、「WHERE T1.SNO=T2.SNO」と同じです。 |
イ |
「WHERE T1.SNO IN (SELECT SNO FROM T1)」は、T1のすべてのデータを出力することを意味します。 |
ウ |
「SELECT SNAME」は実行した結果、同じSNAMEが複数あった場合、重複したデータを出力します。 |
エ |
「SELECT SNAME」は実行した結果、同じSNAMEが複数あった場合、重複したデータを出力します。
また、「WHERE T1.SNO IN (SELECT SNO FROM T1)」は、T1のすべてのデータを出力することを意味します。 |
【キーワード】
・SELECT文
【キーワードの解説】
- SELECT文
SQL言語の中のステートメントで、1つ以上の表から条件にあったデータを取り出すときに使用します。
- DISTINCTは、重複データを出力しない
- WHEREは、元となる表の指定
- ORDERは、結果をソート
意味になります。
もっと、「SELECT文」について調べてみよう。
戻る
一覧へ
次へ
|