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

【問題】

”学生”表が次の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は、学生番号が’K%’となっている。%とは任意の数字を表すから、K%とは、K1001とかK1002になっているものをいう。

そして、検査のタイミングは、データの更新のタイミング、すなわちINSERTかUPDATEの時のみとなるから、アとウは不適切となる。

イは、学生番号にj2002を入れようとしており、K%ではないから、検査違反となる。よって解答はイとなる。

なお、エは、学部コードを更新するだけで学生番号とは関係ないから、不適切となる。

↓クリックしていただけると励みになります↓
にほんブログ村 株ブログ 株日記へ にほんブログ村 メンタルヘルスブログ 統合失調症へ にほんブログ村 為替ブログ 為替日記へ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする