“商品”表に対してデータの更新処理が正しく実行できるUPDATE文はどれか。
ここで,“商品”表は次のCREATE文で定義されている。
CREATE TABLE 商品
(商品番号 CHAR(4), 商品名 CHAR(20), 仕入先番号 CHAR(6), 単価 INT,
PRIMARY KEY(商品番号))
商品
商品番号|商品名|仕入先番号|単価/S001|A|XX0001|18000/S002|A|YY0002|20000/S003|B|YY0002|35000/S004|C|ZZ0003|40000/S005|C|XX0001|38000
正答4
解説
正解は4です。
“商品”表の主キーは商品番号です。
主キーには、値の重複を許さない一意性制約と、NULLを許さない非NULL制約がかかります。
【選択肢別解説】
1:× 商品番号S002をS001に変更すると、既にあるS001の行と主キーが重複します。
一意性制約に反するので実行できません。
2:× 商品名がCの行はS004とS005の2行あります。
両方の商品番号をS006にすると主キーが重複するので、一意性制約に反します。
3:× 主キーである商品番号をNULLにする更新です。
主キーにはNULLを設定できないので、実行できません。
4:○ 主キーではない商品名を、商品番号S003の1行だけDに変更します。
主キーの制約に関係しないので、正しく実行できます。
【ポイント】
主キーの列を更新するときは、重複とNULLの両方に注意します。
WHERE句の条件に複数行が当てはまると、すべての行が同じ値に更新される点も押さえます。