問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
→回答と解説
列の追加はALTER TABLE文を使用します。
ALTER TABLE 表名 ADD (列名 データ型 [,列名 データ型...]);
すでに行データを含んだ表に列を追加する場合、追加列の値はNULLになります。
ただし DEFAULTオプションを指定した場合には、その値が列値に設定されます。
また、追加した列は、既存列の最後に追加されます。
COUNT関数は行数を戻します。
COUNT(*) ・・・NULL値を含めた行数を戻す
COUNT(列名) ・・・NULL値を除く行数を戻す
COUNT(DISTINCT 列名) ・・・NULL値を除く「列名」列値の種類の数を戻す
索引の作成はCREATE INDEX文にて行います。
CREATE [UNIQUE] INDEX [スキーマ名.]索引名 ON [スキーマ名.]表名
( 列 [ASC | DESC]
[,列 [ASC | DESC]...]);
その他、索引を作成する表領域の指定(TABLESPACE句)、索引領域のエクステ
ント指定(STORAGE句)、ロギングの指定、ソートの指定等 が可能です。
論理条件「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 は偽となります。
SGA を構成する要素のうち、「データベースバッファキャッシュ」には、データ
ファイルから検索されたデータブロックのコピーが格納されます。各SELECT文や、
DML 文が実行されると、バッファキャッシュ内にデータが存在するかを確認し、
存在する場合はバッファキャッシュからデータの読み取りや変更が行われます。
また、バッファキャッシュ内に必要なデータがない場合、データファイルから
バッファキャッシュ内にデータブロックが読み込まれ、使用されます。
既存の表から新しい表を作る場合、「create table 表名 as select文」 を使用
することができます。SELECT文に、既存表からコピーしたいカラム名を指定した
り、 WHERE句を使用して移行するデータを絞り込むことができます。
この時、新規表には「列の名前」「行データ」「NOT NULL制約」
のみがコピーされます。
制約の削除構文は、以下のようになります。
ALTER TABLE [スキーマ名.]表名
DROP {CONSTRAINT 制約名 | PRIMARY KEY | UNIQUE (列名)} [CASCADE];
※CASCADEオプション
依存する整合性制約も同時に削除します。
※PK、UNIQUE制約を削除すると、制約にもとづいて作られた一意索引も削除されます
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」
となります。
比較条件には、以下のようなものがあります。
= 等しい
!=/<>/ˆ= 等しくない
>= 以上
<= 以下
> より大きい
< より小さい
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 文字パターンと一致しない
表に作成された制約を使用可能・禁止にするには、ALTER TABLE文を使用します。
ALTER TABLE 表名 DISABLE|ENABLE CONSTRAINT 制約名 [CASCADE];
また、「CONSTRAINT 制約名」の代わりに、「PRIMARY KEY」や「UNIQUE (列名)」
なども指定できます。「CASCADE」オプションを使用すると、依存する整合性制
約も無効になります。
Copyright © 2006 mari. All rights reserved. |
|