平成27年度春期 問28 / 80

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

“学生”表が次の 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〜4 で解答 → 次の問題 ← 前の問題

正解と解説を見る

正解:イ

検査制約 CHECK (学生番号 LIKE 'K%') は,「学生番号は K で始まらなければならない」という制約です。表に格納される行の学生番号が K で始まらなくなる操作が違反になります。

  • ア: DELETE で学生番号 'K1002' の行を削除する
    誤り。行を削除するだけで,残る行の学生番号はすべて K で始まるので違反にはなりません。

  • イ: INSERT で学生番号 'J2002' の行を追加する
    正しい。学生番号 'J2002' は K で始まらないため,検査制約に違反します。

  • ウ: SELECT で学生番号 'K1001' の行を検索する
    誤り。検索は表の内容を変更しないので,制約違反にはなりません。

  • エ: UPDATE で学部コードを 'N001' に変更する
    誤り。変更するのは学部コードだけで,学生番号は K で始まるままなので違反にはなりません。


答え

イ: INSERT で学生番号 'J2002' の行を追加する

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

平成27年度春期の他の問題