平成24年度 秋期 応用情報技術者試験 午前 問28
R表に,(A,B)の2列で一意にする制約(UNIQUE制約)が定義されているとき,R表に対するSQL文のうち,この制約に違反するものはどれか。ここで,R表には主キーの定義がなく,また,全ての列は値が決まっていない場合(NULL)もあるものとする。
R
| A | B | C | D |
|---|---|---|---|
| AA01 | BB01 | CC01 | DD01 |
| AA01 | BB02 | CC02 | NULL |
| AA02 | BB01 | NULL | DD03 |
| AA02 | BB03 | NULL | NULL |
キーボード:1〜4 で解答 → 次の問題 ← 前の問題
正解と解説を見る
解答する前に解説を開いたので、この問題は「見て解いた」として記録します(正解数には入りません)。
正解:エ
-
ア: DELETE文
誤り。行を削除しても(A,B)の値が重複することはないため,制約違反にはなりません。 -
イ: INSERT文('AA01',NULL,…)
誤り。BがNULLの行です。UNIQUE制約では,NULLは他の値と等しいとはみなされないため,重複とはならず制約違反になりません。 -
ウ: INSERT文(NULL,NULL,…)
誤り。A,Bともに NULL なので,既存の行と重複するとはみなされず,制約違反になりません。 -
エ: UPDATE文
正しい。AがAA01の2行のAをAA02に変更すると,(AA01,BB01)が(AA02,BB01)になり,既存の3行目(AA02,BB01)と重複します。したがってUNIQUE制約に違反します。
答え
エ: UPDATE R SET A = 'AA02' WHERE A = 'AA01'
出典:平成24年度 秋期 応用情報技術者試験 午前 問28