本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成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 │埼玉県 │
 └─────┴────┴─────┴────┘

ア DELETE FROM 学生 WHERE 学生番号 = 'K1002'

イ INSERT INTO 学生 VALUES ('J2002', '渡辺次郎', 'M006', '東京都')

ウ SELECT * FROM 学生 WHERE 学生番号 = 'K1001'

エ UPDATE 学生 SET 学部コード = 'N001' WHERE 学生番号 LIKE 'K%'


正解


解説

CHECK (学生番号 LIKE 'K%' ) によって、学生番号が Kから始まっていない文字列を操作する際に違反となる。

ア 学生番号が K1002のレコードを削除する操作であり問題ない。

イ 正しい。学生番号が Jから始まっているレコードの挿入であるため、違反となる。

ウ 学生番号が K1001の行を抽出する操作であり、問題ない。

エ 学生番号が Kで始まるレコードの学部コードを N001 に更新する操作であり問題ない。

問27 目次 問29