講義/早稲田大学/データベース設計/SQL/演習/演習3 解答

提供: fukudat
移動: 案内検索
問題
二つのリレーション R, Santi-semijoin とは,RS を join したときにダングリングタプル(dangling tuples; join する相手のいないタプル) だけを返す演算である.
R(A, B, C)S(A, B, D) のキーが (A, B) であるとき,以下の SQL文のうち正しく anti-semijoin を実現しているものを選べ(複数あるかもしれない).
解答

教科書 p.69参照.

select * from R where <A,B> not in (select A,B from S) yes
select R.* from R,S where R.A <> S.A and R.B <> S.B no
select R.* from R,S where R.A <> S.A or R.B <> S.B no
select * from R where not exists (select * from S where S.A = R.A and S.B = R.B) yes
select * from R where not exists (select * from S where S.A = R.A or S.B = R.B) no
select * from R where A <>any (select A from S) and B <>any (select B from S) no
select * from R where A <>all (select A from S) or B <>all (select B from S) no
select * from R where 1 > (select count(*) from S where S.A = R.A and S.B = R.B) yes
個人用ツール
名前空間

変種
操作
案内
ツールボックス