Oracleデータベースエンジニアとしての基礎力を証明するORACLE MASTER Bronze。その取得を目指す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です。
Copyright © ITmedia, Inc. All Rights Reserved.