平成27年春期試験問題 午前問28

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

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

  • 28a.png
  • 28i.png
  • 28u.png
  • 28e.png
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データ操作
解説
検査制約は、テーブルに格納されるデータの種類を一定の範囲や種類に限定するための方法です。

検査制約を設けるには、CREATE TABLE文でテーブルを作成するときの属性(列)の定義を

 CHECK(属性名 検査式)

という形式で記述することで、特定の列の値が任意の式を満たすように指定できます。

設問では"学生番号"列に LIKE 'K%'(Kから始まる任意の文字列)という制約が定義されているので、各SQL文がこれに反する操作を行っていないかを検証します。
  • "学生番号"が"K1002"の行を削除する操作です。問題はありません。
  • 正しい。追加されるデータの1つ目(学生番号になる)が"J2002"で、先頭が"K"ではないため検査制約違反となります。
  • "学生番号"が"K1001"の行のすべての列を抽出する操作です。問題はありません。
  • "学生番号"が"K"で始まる行の"学部コード"をN001に更新する操作です。問題はありません。

Pagetop