←ホームへ戻る




問1 ..................................................................................................

以下の DDL文にて、 EMP表に列を追加しました。 SAL列が追加される位置と
して正しいものを選びなさい。

ALTER TABLE EMP ADD (SAL NUMBER(7));

a.表の先頭に追加される
b.表の一番後ろに追加される
c.表の列名でソートされた場所に追加される
d.列の追加される位置は決まっていない(ランダム)
      

→回答と解説



問2 ..................................................................................................

従業員(EMP) 表には、職種を表す JOB列が含まれています。現在 EMP表に存在
する職種の数を検索するSELECT文として正しいものを選びなさい。


a.SELECT JOB FROM EMP;
b.SELECT COUNT(DISTINCT JOB) FROM EMP;
c.SELECT COUNT(JOB) FROM EMP;
d.SELECT DISTINCT COUNT(JOB) FROM EMP;
e.SELECT DISTINCT (COUNT(JOB)) FROM EMP;
      

→回答と解説



問3 ..................................................................................................

EMP 表にINDX_EMPという名前の索引を作成します。 ENAME列と JOB列の組合せ
で索引を作成する DDL文として正しいものを選びなさい。

a.CREATE INDEX EMP ON INDX_EMP (ENAME and JOB);
b.CREATE INDEX EMP ON INDX_EMP (ENAME,JOB);
c.CREATE INDEX EMP ON (ENAME,JOB);
d.CREATE INDEX INDX_EMP ON EMP (ENAME and JOB);
e.CREATE INDEX INDX_EMP ON EMP (ENAME,JOB);
f.CREATE INDEX INDX_EMP ON (ENAME,JOB);
      

→回答と解説



問4 ..................................................................................................

SMITH の職業は "CLERK"、給与は"800"である場合、
SMITH のレコードが検索される条件をすべて選びなさい。

a.WHERE JOB='clerk' AND SAL=800
b.WHERE JOB='clerk' OR SAL=800
c.WHERE JOB NOT IN ('SALESMAN','MANAGER')
d.WHERE NOT JOB='CLERK' AND SAL=800
e.WHERE SAL NOT BETWEEN 800 AND 1000
      

→回答と解説



問5 ..................................................................................................

SGA のメモリを構成する要素のうち、データファイル内のデータブロックの
コピーを格納する領域として当てはまるものを選びなさい。

a.ライブラリキャッシュ
b.データディクショナリキャッシュ
c.REDOログバッファ
d.データベースバッファキャッシュ
e.共有プール
      

→回答と解説



問6 ..................................................................................................

下記の副問合せを使用し、既存表 EMPから、新規表 EMP_NEWを作成します。
新規表EMP_NEW に引き継がれる設定情報をすべて選びなさい。

CREATE TABLE EMP_NEW AS SELECT * FROM EMP;

a.列の名前
b.データ型
c.行データ
d.デフォルト値
e.NOT NULL制約
f.主キー制約
g.外部キー制約
      

→回答と解説



問7 ..................................................................................................

EMP 表に作成されている参照整合性制約「FK1_DEPT」を削除するために使用
する文として正しいものを選びなさい。

a.ALTER TABLE emp DROP primary key;
b.DROP CONSTRAINT primary key;
c.ALTER TABLE emp DROP CONSTRAINT fk1_dept;
d.DROP CONSTRAINT fk1_dept;
e.ALTER TABLE emp DROP foreign key;
      

→回答と解説



問8 ..................................................................................................

下記の EMP表への検索条件と同じものを選びなさい。

SELECT * FROM emp WHERE NOT deptno >= 30 AND JOB = 'SALESMAN';

a.WHERE deptno < 30 AND job = 'SALESMAN'
b.WHERE deptno <= 30 AND job = 'SALESMAN'
c.WHERE NOT (deptno >= 30 AND job = 'SALESMAN')
d.WHERE NOT deptno >= 30 AND NOT job = 'SALESMAN'
e.WHERE deptno < 30 AND job != 'SALESMAN'
      

→回答と解説



問9 ..................................................................................................

EMPNO列の値が「10100」である行が検索されない条件をすべて選びなさい。

a.where empno >= 10000
b.where empno between 10100 and 11000
c.where empno not between 10100 and 11000
d.where empno in (10000,10100,10200)
e.where empno is null
      

→回答と解説



問10 ................................................................................................

制約を無効にするための DDL文の空欄を埋めなさい。

ALTER TABLE emp __________ CONSTRAINT pk_emp;

a.ENABLE
b.DISABLE
c.USED
d.UNUSED
e.VALIDATE
f.NOVALIDATE
      

→回答と解説



回答と解説(問1)・・・答え:b
列の追加はALTER TABLE文を使用します。

ALTER TABLE 表名 ADD (列名 データ型 [,列名 データ型...]);

すでに行データを含んだ表に列を追加する場合、追加列の値はNULLになります。
ただし DEFAULTオプションを指定した場合には、その値が列値に設定されます。
また、追加した列は、既存列の最後に追加されます。
      



回答と解説(問2)・・・答え:b
COUNT関数は行数を戻します。

COUNT(*)    ・・・NULL値を含めた行数を戻す
COUNT(列名) ・・・NULL値を除く行数を戻す
COUNT(DISTINCT 列名) ・・・NULL値を除く「列名」列値の種類の数を戻す
      



回答と解説(問3)・・・答え:e
索引の作成はCREATE INDEX文にて行います。

CREATE [UNIQUE] INDEX [スキーマ名.]索引名 ON [スキーマ名.]表名
( 列 [ASC | DESC]
[,列 [ASC | DESC]...]);


その他、索引を作成する表領域の指定(TABLESPACE句)、索引領域のエクステ
ント指定(STORAGE句)、ロギングの指定、ソートの指定等 が可能です。
      



回答と解説(問4)・・・答え:b,c
論理条件「a AND b」は「aとbが真である場合に、全体が真」となり、
また「a OR b」は「aまたはbのどちらかが真である場合に、全体が真」となります。

各選択肢を見てみると、
「a.WHERE JOB='clerk' AND SAL=800」
「b.WHERE JOB='clerk' OR SAL=800」
JOB='clerk'(職業は"clerk"である)は偽、SAL=800(給与は"800"である)は真です。
よって選択肢a は偽、選択肢b は真となります。

「d.WHERE NOT JOB='CLERK' AND SAL=800」
NOT JOB='CLERK'(職業は"CLERK"ではない)は偽であるため、選択肢d も偽となります。


c.WHERE JOB NOT IN ('SALESMAN','MANAGER')
これは、(職業が"SALESMAN""MANAGER"のどちらでもない)となり真であるため、
選択肢c は真となります。

e.WHERE SAL NOT BETWEEN 800 AND 1000
これは、(給与が"800"〜"1000"ではない)となり偽であるため、選択肢e は偽となります。
      



回答と解説(問5)・・・答え:d
SGA を構成する要素のうち、「データベースバッファキャッシュ」には、データ
ファイルから検索されたデータブロックのコピーが格納されます。各SELECT文や、
DML 文が実行されると、バッファキャッシュ内にデータが存在するかを確認し、
存在する場合はバッファキャッシュからデータの読み取りや変更が行われます。

また、バッファキャッシュ内に必要なデータがない場合、データファイルから
バッファキャッシュ内にデータブロックが読み込まれ、使用されます。
      



回答と解説(問6)・・・答え:a,b,c,e
既存の表から新しい表を作る場合、「create table 表名 as select文」 を使用
することができます。SELECT文に、既存表からコピーしたいカラム名を指定した
り、 WHERE句を使用して移行するデータを絞り込むことができます。

この時、新規表には「列の名前」「行データ」「NOT NULL制約」
のみがコピーされます。
      



回答と解説(問7)・・・答え:c
制約の削除構文は、以下のようになります。

ALTER TABLE [スキーマ名.]表名
DROP {CONSTRAINT 制約名 | PRIMARY KEY | UNIQUE (列名)} [CASCADE];


※CASCADEオプション
依存する整合性制約も同時に削除します。

※PK、UNIQUE制約を削除すると、制約にもとづいて作られた一意索引も削除されます
      



回答と解説(問8)・・・答え:a
WHERE 句に複数の条件を指定する場合、論理条件を使用します。
・NOT	:否定 
・AND	:論理積(「A AND B」の場合、両方とも真(TRUE)となる) 
・OR	:論理和(「A OR B」の場合、片方もしくは両方が真(TRUE)となる)

また、論理条件には優先順位があり、「()→NOT→AND→OR」となります。


従って、「WHERE NOT deptno >= 30  AND JOB = 'SALESMAN';」は、

 「deptno が 30 以上ではない(30より小さい)」 かつ 「JOB が SALESMAN」

となります。
      



回答と解説(問9)・・・答え:c,e
比較条件には、以下のようなものがあります。

=			等しい
!=/<>/ˆ=	等しくない 
>=			以上
<=			以下 
>			より大きい
<			より小さい 
BETWEEN a AND b		a以上b以下
NOT BETWEEN a AND b	a以上b以下の範囲外 
IN (list1,list2…)		リスト内のいずれかと等しい
NOT IN (list1,list2…)	リスト内のいずれとも等しくない 
IS NULL		null値である
IS NOT NULL	null値でない 
LIKE		文字パターンと一致する
NOT LIKE	文字パターンと一致しない 
      



回答と解説(問10)・・・答え:b
表に作成された制約を使用可能・禁止にするには、ALTER TABLE文を使用します。

ALTER TABLE 表名 DISABLE|ENABLE CONSTRAINT 制約名 [CASCADE];


また、「CONSTRAINT 制約名」の代わりに、「PRIMARY KEY」や「UNIQUE (列名)」
なども指定できます。「CASCADE」オプションを使用すると、依存する整合性制
約も無効になります。
      












Copyright © 2006 mari. All rights reserved.