次のSQL文によって定義され,値が格納されている"商品"表に対して,制約違反で実行エラーとなるSQL文はどれか。 〔SQL文〕 CREATE TABLE 商品 (商品コード CHAR(4) PRIMARY KEY,商品名 VARCHAR(21), 仕入先コード CHAR(4),仕入単価 INT,在庫数 INT)
主キーは重複不可。複数行を同じ値に更新すると違反
商品表(既存データ):
| 商品コード | 商品名 | 仕入先コード | 仕入単価 | 在庫数 |
|---|---|---|---|---|
| A111 | テレビ | S001 | 75,000 | 0 |
| A222 | デジタルカメラ | S002 | 50,000 | 50 |
| A333 | DVDプレーヤ | NULL | NULL | NULL |
| A444 | 洗濯機 | S004 | 45,000 | 20 |
選択肢
- アDELETE FROM 商品 WHERE 仕入先コード IS NULL
- イINSERT INTO 商品 VALUES ('A555', '空気清浄機', 'S005', 60000, 50)
- ウUPDATE 商品 SET 商品コード = 'A666' WHERE 商品コード = 'A444'
- エUPDATE 商品 SET 商品コード = 'A777' WHERE 在庫数 >= 20
正解と解説
正解:エ UPDATE 商品 SET 商品コード = 'A777' WHERE 在庫数 >= 20
商品コードは主キーなので、値の重複は許されない。在庫数が20以上の行はデジタルカメラ(50)と洗濯機(20)の2行あり、その両方の商品コードを同じ'A777'に更新しようとすると主キーの一意性制約に違反して実行エラーになる。他の3つは重複もNULLも生じないため正常に実行できる。
選択肢ごとの解説
- ア仕入先コードがNULLの行を削除するだけで、制約違反は起きない。
- イ既存にない商品コードの追加なので、主キーの重複は生じない。
- ウ1行だけを既存にない値へ更新するので、一意性は保たれる。
- エ在庫数20以上の2行を同じ商品コードに更新するため、主キーが重複して実行エラーになる。
同じ分野の他の問題
- “商品”表に対するSQL文と同じ結果が得られるSELECT文はどれか。 〔SQL文〕 SELECT * FROM 商品 …2025年度 公開問題 科目A 問6
- “得点”表から、学生ごとに全科目の点数の平均を算出し、平均が80点以上の学生の学生番号とその平均点を求める。aに入れる適…2019年度 秋期 午前 問26
- "学生"表と"学部"表に対して次のSQL文を実行した結果として、正しいものはどれか。 〔SQL文〕 SELECT 氏名 …2019年度 春期 午前 問29
- "中間テスト"表からクラスごと、教科ごとの平均点を求め、クラス名、教科名の昇順に表示するSQL文中のaに入れる字句はどれ…2019年度 春期 午前 問27
- 次の埋込みSQLを用いたプログラムの一部において、Xは何を表す名前か。 EXEC SQL OPEN X; EXEC SQ…2018年度 春期 午前 問28
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。