ビューGOODMAKERを用いて検索する次のSELECT文と同等な表を導出するSQL文はどれか。
CREATE VIEW GOODMAKER(MNO, STATUS, AREA)
AS SELECT MAKER.MNO, MAKER.STATUS, MAKER.AREA
FROM MAKER
WHERE MAKER.STATUS > 20
SELECT MNO, STATUS、AREA FROM GOODMAKER
WHERE GOODMAKER.AREA <> ’TOKYO’
ア | SELECT MAKER.MNO, MAKER.STATUS, MAKER.AREA FROM GOODMAKER WHERE GOODMAKER.AREA <> ’TOKYO’ AND MAKER.STATUS > 20 |
イ | SELECT MAKER.MNO, MAKER.STATUS, MAKER.AREA FROM MAKER WHERE MAKER.AREA <> ’TOKYO’ AND MAKER.STATUS > 20 |
ウ | SELECT MAKER.MNO, MAKER.STATUS, MAKER.AREA FROM MAKER WHERE MAKER.AREA <> ’TOKYO’ OR MAKER.STATUS > 20 |
エ | SELECT MAKER.MNO, MAKER.STATUS, MAKER.AREA FROM MAKER WHERE MAKER.AREA=’TOKYO’ OR MAKER.STATUS > 20 |
答え イ
【解説】
問題文のSQL文の前半の
『CREATE VIEW GOODMAKER(MNO, STATUS, AREA)
AS SELECT MAKER.MNO, MAKER.STATUS, MAKER.AREA
FROM MAKER
WHERE MAKER.STATUS > 20』
は、
1行目は、GOODMAKERという仮想のテーブルを作り、その中の要素には「MNOとSTATUSとAREA」があるという意味です。
2行目、3行目は、MAKERというテーブルの「MNOとSTATUSとAREA」要素を取り出すという意味です。
4行目は、取り出す条件で、STATUSが20より大きいという意味です。
後半の
『SELECT MNO, STATUS、AREA FROM GOODMAKER
WHERE GOODMAKER.AREA <> ’TOKYO’』
は、
前半で作成したGOODMAKERのビューのうち、AREAがTOKYOでないもの取り出すという意味です。
要約すると、『テーブル:MAKERの、
(1)STATUSが20より大きい。かつ
(2)AREAがTOKYO以外。
のデータを取り出し、その要素の「MNOとSTATUSとAREA」でテーブルを作る。』という意味です。
ア | 選択肢では、3行目で「FROM GOODMAKER」となっていますが、“GOODMAKER”というテーブルはそもそも存在しませんので、間違いです。 |
イ | 選択肢では、3行目、4行目で(1)AND(かつ)(2)になっていて、1行目、2行目も問題なく、問題文のSQL文と同じ結果が得られます。 |
ウ | 選択肢では、3行目、4行目で上記(1)OR(または)(2)になっているので間違いです。 |
エ | 選択肢では、3行目が「AREAがTOKYOであること」になっていて、上記(2)と合わないので、間違いです。 |
【キーワード】
・SQL文