基本情報技術者試験 - 令和8年公開問題 - 問7

次のSQL文によって定義され,値が格納されている“商品”表に対して,制約違反で実行エラーとなるSQL文はどれか。

SQL文
CREATE TABLE 商品
(商品コード CHAR(4)PRIMARY KEY,商品名 VARCHAR(21),
 仕入先コード CHAR(4),仕入単価 INT,在庫数 INT)

商品

商品コード商品名仕入先コード仕入単価在庫数
A111テレビS00175,0000
A222デジタルカメラS00250,00050
A333DVDプレーヤNULLNULLNULL
A444洗濯機S00445,00020
DELETE FROM 商品 WHERE 仕入先コード IS NULL
INSERT INTO 商品 VALUES('A555','空気清浄機','S005',60000,50)
UPDATE 商品 SET 商品コード = 'A666' WHERE 商品コード = 'A444'
UPDATE 商品 SET 商品コード = 'A777' WHERE 在庫数 >= 20
答え
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
解説
この問題はSQLデータベースの制約(主キー制約など)に関する理解を問うものです。“商品”表では「商品コード」がPRIMARY KEY(主キー)に指定されているため,商品コードの値は表の中で重複してはいけないというルールがあります。選択肢「エ」のSQL文は,在庫数が20以上の商品(A222・A444の2件)すべての商品コードを一度に 'A777' へ変更しようとする内容です。もし対象が複数件ある場合,両方が同じ 'A777' という値になってしまい,主キーの一意性(重複禁止)に違反してエラーとなります。従ってこれが正解です。

「ア」は仕入先コードが NULL の行(A333)を削除するだけで問題ありません。「イ」は新しい商品コード 'A555' を追加するだけで重複しません。「ウ」は商品コードが1件しか一致しないため,単独の更新であり問題は起きません。主キー制約は「表全体で値が重複しないこと」を保証する仕組みだと理解しておきましょう。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる