平成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