過去問解きまくり研究所 ホーム

令和8年度 科目A 問7

データベース

SQL文

次の 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
答えと解説を見る

✓ これが正解エUPDATE 商品 SET 商品コード = 'A777' WHERE 在庫数 >= 20

解説

在庫数20以上の2行が同じ商品コードになり主キーが重複します。

商品コードには PRIMARY KEY が指定されているので、主キーとして表の中で値が重複してはならず、NULL も許されません。在庫数が20以上の行に商品コードを一括で設定する更新文を考えます。条件に当てはまるのは、在庫数50のデジタルカメラの行と在庫数20の洗濯機の行の2行です。両方の商品コードが同じ値に書き換えられるため、主キーの重複が起きて制約違反となります。在庫数が NULL の行は、比較の結果が真にならないので対象に含まれません。更新文では、WHERE 句で何行が選ばれ、その全行に同じ値が入ることでキーが重複しないかを確かめると判断できます。

ほかの選択肢はなぜ違うのか

出典:令和8年度 基本情報技術者試験 科目A 問7

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)