連載
» 2008年12月12日 00時00分 公開

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

Oracleデータベースエンジニアとしての基礎力を証明するORACLE MASTER Bronze。その取得を目指すITエンジニアのための講座が本連載だ。間違いやすいポイントを確認し、合格に近づこう!

[ゴールデンフォレスト株式会社,@IT]

 前回「トランザクションと読み取り一貫性の便利な機能」では、トランザクションの意味と読み取り一貫性の機能について学習しました。

 今回は、以下の項目を確認します。

  • 表の作成と変更
  • 制約

表の作成

例題1

表の作成文として間違っているものを次の中から選択してください。

a.
create table test1
(col1 number,
col2 varchar2(30),
col3 long,
col4 date);

b.create table test1
(col1 number,
col2 varchar2(30),
col3 long,
col4 long);

c.
create table test1
(col1 number,
col2 varchar2(30),
col3 long,
col4 char(20) not null)

d.
create table test1
(col1 number constraint test_pk primary key,
col2 varchar2(30),
col3 long,
col4 char(20) not null);

例題の範囲をおさらい

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

 表を作成する際には、データ型の指定や制約の指定を行います。それぞれのデータ型の特徴、制約の記述方法を理解しておく必要があります。

正解

b

解説

 選択肢a、c、dは正しいcreate table文です。

 選択肢bのSQL文を実行すると、以下のような結果になります。

SQL> create table test1
  2  (col1 number,
  3   col2 varchar2(30),
  4   col3 long,
  5   col4 long);
 col4 long)
 *
行5でエラーが発生しました。:
ORA-01754: LONG型の列は表に1つのみ含められます

 LONG型は1つの表に1列しか指定できないため、エラーとなります。

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

表の変更

2例題2

以下の表のcol1列にNOT NULL制約を追加している文を選択してください。

SQL> desc test1
 名前                                      NULL?    型
 ----------------------------------------- -------- ---------------
 COL1                                               NUMBER
 COL2                                               VARCHAR2(30)
 COL3                                               LONG
 COL4                                               DATE

a.alter table test1
modify (col1 not null);

b.alter table test1
add (col1 not null);

c.alter table test1
add (col2 number not null);

d.NOT NULL制約は表の作成時にのみ指定可能

例題の範囲をおさらい

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

 表の定義を変更するには、ALTER TABLE文を使用します。ALTER TABLE MODIFY文では、列の定義を変更できます。

正解

a

解説

 列にNOT NULL制約を追加する場合は、MODIFY句で指定します。

SQL> alter table test1
  2  modify (col1 not null);
表が変更されました。
SQL> desc test1
 名前                                      NULL?    型
 ----------------------------------------- -------- ---------------
 COL1                                      NOT NULL NUMBER
 COL2                                               VARCHAR2(30)
 COL3                                               LONG
 COL4                                               DATE

 よって、正しい文は選択肢aです。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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