SQLでの表の作成と管理間違いやすいポイントを追え! Bronze SQL基礎I(10)(2/2 ページ)

» 2008年12月12日 00時00分 公開
前のページへ 1|2       

表の制約

例題3

下記のCREATE TABLE文について記述した内容のうち、間違っているものを選択してください。

create table test1
(col1 number primary key,
 col2 varchar2(50),
 col3 date,
 col4 number,
 col5 number,
 constraint test1_uk unique(col4,col5));

a.unique制約の制約名はtest1_ukである

b.主キーの制約名はORACLEが自動的に作成する

c.col4、col5は個々の列内で重複しない値であれば格納ができる

d.col1にNULL値を格納することはできない

例題の範囲をおさらい

参考:「SQLで表のデータを制限する

 制約の意味や記述方法を覚えておきましょう。

正解

c

解説

選択肢a、b:データディクショナリで確認することが可能です。

SQL> select column_name,constraint_name
  2  from user_cons_columns
  3  where table_name='TEST1';
COLUMN_NAME          CONSTRAINT_NAME
-------------------- ------------------------------------------
COL1                 SYS_C004258
COL5                 TEST1_UK
COL4                 TEST1_UK

 COL4、COL5には、TEST1_UKという名前のUNIQUE制約が定義されています。

 COL1は制約名(CONSTRAINT句)を省略したため、ORACLEが自動的に「SYS_Cxxxx」という形式の名前を作成しています。

選択肢c:COL4、COL5には、TEST1_UKという名前のUNIQUE制約が複合で付けられています。この場合、おのおのの列内で重複しない値を格納できるのではなく、COL4、COL5の値を組み合わせてみたときに重複しない値を格納できます。

SQL> select col4,col5 from test1;
      COL4       COL5
---------- ----------
         1          1
         1          2
         1          3

選択肢d:COL1列には主キー制約が定義されています。そのため、重複する値、NULL値は格納できません。

 よって、間違っているものは選択肢cです。

まとめ

 次の内容をチェックしましょう。

  • 表作成、表変更の構文
  • 制約の意味と作成方法

 今回の範囲は、引っ掛け問題が多い部分です。内容をよく理解し、ミスをしないようにしましょう。

 制約については、列制約構文と表制約構文の違いも確認しておきましょう。

 次回は表以外のスキーマオブジェクトの作成と管理について、間違いやすい点にポイントを絞って説明します。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。