平成27年度春期 応用情報技術者試験 午前 問28

分野:データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計)|実際に出題されたIPA過去問題

“学生”表が次のSQL文で定義されているとき,検査制約の違反となるSQL文はどれか。CREATE TABLE 学生 ( 学生番号 CHAR(5) PRIMARY KEY, 学生名 CHAR(16), 学部コード CHAR(4), 住所 CHAR(16), CHECK (学生番号 LIKE 'K%'))。学生表:K1001 田中太郎 E001 東京都/K1002 佐藤一美 E001 茨城県/K1003 高橋肇 L005 神奈川県/K2001 伊藤香織 K007 埼玉県

  1.  DELETE FROM 学生 WHERE 学生番号 = 'K1002'
  2.  INSERT INTO 学生 VALUES ('J2002','渡辺次郎','M006','東京都')
  3.  SELECT * FROM 学生 WHERE 学生番号 = 'K1001'
  4.  UPDATE 学生 SET 学部コード = 'N001' WHERE 学生番号 LIKE 'K%'
解答・解説を見る

正解:イ

AI解説

検査制約(CHECK制約)は、行の挿入・更新時に指定条件を満たすかを検査する仕組みである。本問ではCHECK(学生番号 LIKE 'K%')により学生番号はKで始まらなければならない。'J2002'を挿入するINSERT文はこの条件に違反するため、イが正解である。 ア: DELETEは行を削除する操作であり、新たな値の検査は発生しないためCHECK制約違反にはならない。 イ: 正解。挿入しようとする学生番号'J2002'はKで始まっておらず、CHECK(学生番号 LIKE 'K%')の検査制約に違反する。 ウ: SELECTはデータを参照するだけでデータベースの内容を変更しないため、制約の検査対象外である。 エ: 更新するのは学部コード列であり、CHECK制約の対象である学生番号は変更されないため違反しない。 💡 CHECK制約が働くのはINSERTとUPDATEのとき。PRIMARY KEY(一意+非NULL)、FOREIGN KEY(参照整合性)、CHECK(値の条件)の各制約が何を検査するかを区別して覚える。

出典:平成27年度 春期 応用情報技術者試験 午前 問28 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「データベース」分野の攻略ポイント

関係モデル・正規化・SQL・トランザクション管理・障害回復・データベース設計が中心です。計算問題は少なく、定義と手順を正確に覚えていれば確実に得点できる、いわば「取りこぼしてはいけない」分野です。特に正規形とACID特性は毎年のように形を変えて出ます。

データベースの攻略ポイントをすべて見る(要点5項目・ひっかけ3項目)→

同じ分野(データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計))の過去問