必ず受かる情報処理技術者試験

当サイトは、情報処理技術者試験に合格するためのWebサイトです。
ITパスポート試験,基本情報技術者,応用情報技術者,高度試験の過去問題と解答及び詳細な解説を掲載しています。
  1. トップページ
  2. 応用情報技術者
  3. 平成27年度春季問題一覧
  4. 平成27年度春季問題28-解答・解説-分析

平成27年度春季問題

問題28

“学生”表が次のSQL文で定義されているとき、検査制約の違反となるSQL文はどれか。

CREATE TABLE 学生 (学生番号 CHAR(5) PRIMARY KEY,
           学生名 CHAR(16),
           学部コード CHAR(4),
           住所 CHAR(16),
           CHECK (学生番号 LIKE ‘K%’))

DELETE FROM 学生 WHERE 学生番号 = ‘K1002’
INSERT INTO 学生 VALUES (‘J2002’, ‘渡辺次郎’, ‘M006’, ‘東京都’)
SELECT * FROM 学生 WHERE 学生番号 = ‘K1001’
UPDATE 学生 SET 学部コード = ‘N001’ WHERE 学生番号 LIKE ‘K%’

“学生”表が次のSQL文で定義されているとき、検査制約の違反となるSQL文はどれか。

CREATE TABLE 学生 (学生番号 CHAR(5) PRIMARY KEY,
           学生名 CHAR(16),
           学部コード CHAR(4),
           住所 CHAR(16),
           CHECK (学生番号 LIKE ‘K%’))

DELETE FROM 学生 WHERE 学生番号 = ‘K1002’
INSERT INTO 学生 VALUES (‘J2002’, ‘渡辺次郎’, ‘M006’, ‘東京都’)
SELECT * FROM 学生 WHERE 学生番号 = ‘K1001’
UPDATE 学生 SET 学部コード = ‘N001’ WHERE 学生番号 LIKE ‘K%’

解答:イ

<解説>

検査制約(CHECK制約)とは、列を定義するときに条件式を用いた独自の制約条件をつけるための制約である。

問題では、CHECK句で、「学生番号 LIKE ‘K%’」と指定しているので学生番号にはKで始まる文字列だけが入る。

× 問題ない。学生テーブルから学生番号 が ‘K1002’の行を削除する。
学生番号‘J2002’のデータを追加しようとするが、学生番号がKで始まっていないので検査制約違反となる。
× 問題ない。学生テーブルから学生番号 が ‘K1001’の行を抽出する。
× 問題ない。学生番号の頭文字が'K'から始まる学生の学部コードをすべて'N001'に変更する。