←ホームへ戻る




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

下記の DDL文を使用して表を作成しました。エラーとなる文を2つ選びなさい。

create table EMP (id   number(4) primary key,
         name varchar(10) null,
         job  varchar(10) default '-' not null);

a. insert into EMP(id) values(9992);
b. insert into EMP values(9992,null);
c. update EMP set JOB=default;
d. update EMP set JOB=null;
e. delete from EMP where id=9992;
      

→回答と解説



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

以下の SQL文の実行結果として正しいものを選びなさい。

EMP表

  ID NAME  JOB        SAL
---- ----- -------- -----
9992 JANE  CLERK      900
9993 SCOTT SALESMAN  2000
9995 TOM   SALESMAN  1500
9999 MARY  CLERK     1000

select count(*) from EMP where job = (select JOB from EMP where NAME = 'NICK');

a. 0
b. 1
c. 2
d. 3
e. エラー
      

→回答と解説



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

シノニムを確認するために使用するデータディクショナリビューに関する説明として
正しいものをすべて選びなさい。

a. USER_SYNONYMSでプライベートシノニム名とオブジェクト名を確認する
b. USER_OBJECTSでプライベートシノニム名を確認する
c. USER_PUB_SYNONYMSでパブリックシノニム名とオブジェクト名を確認する
d. ALL_SYNONYMSでプライベートシノニム名とオブジェクト名を確認する
e. ALL_SYNONYMSでパブリックシノニム名とオブジェクト名を確認する
      

→回答と解説



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

NULL値が入っているデータを検索する際、NULLではない値に変換することができます。
下記の中から、NULL値をNULL以外の値に変換する際に使用できる関数をすべて選びなさい。

a. NVL
b. NVL2
c. DECODE
d. COALESCE
e. NULLIF
      

→回答と解説



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

ユーザADMINおよびSCOTTにオブジェクト権限を付与します。
下記より、正しい SQL文を選びなさい。

a. grant update(id), select on emp to admin and scott;
b. grant update(id), select on emp to admin,scott;
c. grant update(id) on emp,select on emp to admin and scott;
d. grant update(id) on emp,select on emp to admin,scott;
e. grant update(id) and select on emp to admin,scott;
      

→回答と解説



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

SQL*Plusのコマンドではないものをすべて選びなさい。

a. CREATE
b. DESC
c. GET
d. DESCRIBE
e. SAVE
f. COMMIT
      

→回答と解説



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

既存のビューを更新する下記の SQL文の空欄を埋め、文を完成させなさい。

create _______ view v_emp1 as select * from emp where job = 'MANAGER';

a. new
b. or replace
c. force
d. noforce
e. なにも入れない
      

→回答と解説



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

下記の SQL文を実行した場合、表示される列見出しを選びなさい。

select empno, ename || ' is a ' || job "EMP_info" from emp;

a. EMPNO ENAME JOB
b. EMPNO EMP_info
c. EMPNO EMP_INFO
d. empno ename job
e. empno emp_info
f. EMP_INFO
      

→回答と解説



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

外部キー制約に関する説明として、誤っているものをすべて選びなさい。

a. Primary Key制約とも呼ばれる
b. 参照整合性制約とも呼ばれる
c. 1つまたは複数の列の組み合わせで指定する
d. 子表の外部キー値は、親表の主キーまたは一意キー値と一致するか、NULLである必要がある
e. 自表を親表にすることはできない
      

→回答と解説



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

下記のSELECT文について、それぞれの句の順番がエラーにならないものをすべて選びなさい

a. SELECT - FROM - WHERE - ORDER BY - GROUP BY - HAVING
b. SELECT - FROM - WHERE - ORDER BY - HAVING - GROUP BY
c. SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY
d. SELECT - FROM - WHERE - GROUP BY - ORDER BY - HAVING 
e. SELECT - FROM - WHERE - HAVING - GROUP BY - ORDER BY
      

→回答と解説



回答と解説(問1)・・・答え:b,d
JOB 列は「NOT NULL制約」が指定されていますが、INSERT時に値を省略した場合でも、「デ
フォルト値」が指定されているので、「-」が入力されます(a)。また、明示的に default
を指定しても、デフォルト値がINSERTされます(c)。

上記のように、INSERT文でNULLを指定すると、エラーになります(b,d)。
      



回答と解説(問2)・・・答え:b
まず、 SQL文を二つに分けて考えます。

select count(*) from EMP where job = (select JOB from EMP where NAME = 'NICK');

副問い合わせの結果は、nullが戻されます。
select JOB from EMP where NAME = 'NICK'

よって、
select count(*) from EMP where job = null;

となりますので、「job=null」は常にnullです。
従って、count関数の結果は0件になります。
      



回答と解説(問3)・・・答え:a,b,e
シノニム名・オブジェクト名を確認するビューは下記になります。
・USER_SYNONYMS:所有するプライベートシノニム名・オブジェクト名の確認
・ALL_SYNONYMS:パブリックシノニム名・オブジェクト名
・USER_OBJECTS:所有するプライベートシノニム名
      



回答と解説(問4)・・・答え:a,b,d
それぞれの関数の使用方法は、下記のようになります。

■NVL関数
NVL(expr,val)  exprの値がNULLの場合valを、NULL以外であればexprを戻す

SQL> select ENAME,COMM,nvl(COMM,0) from EMP where ENAME in ('SMITH','ALLEN');
ENAME     COMM NVL(COMM,0)
------- ------ -----------
SMITH                    0
ALLEN      300         300


■NVL2関数
NVL2(expr,val1,val2)  exprの値がNULL以外であればval1を戻す
           exprの値がNULLの場合val2を戻す

SQL> select ENAME,COMM,nvl2(COMM,COMM+100,0) COMM2 from EMP 
   where ENAME in ('SMITH','ALLEN');
ENAME     COMM       COMM2
------- ------ -----------
SMITH                    0
ALLEN      300         400


■NULLIF関数
NULLIF(expr1,expr2)  expr1とexpr2を比較し等しい場合はNULL、等しくない場合はexpr1を戻す

SQL> select ENAME,DEPTNO,nullif(DEPTNO,10) from EMP where ENAME in ('SMITH','KING');
ENAME   DEPTNO NULLIF(DEPTNO,10)
------- ------ -----------------
SMITH       20                10
KING        10 


■COALESCE関数
COALESCE(expr1,expr2…exprn)  exprの中の最初のNULLでないexprを戻す
               すべてNULLの時はNULLを戻す

SQL> select ENAME,SAL,COMM,coalesce(COMM,SAL) from EMP
   where ENAME in ('SMITH','ALLEN');
ENAME       SAL   COMM  COALESCE(COMM,SAL)
----------- ----- ----- -------------------
ALLEN        1600   300                 300
SMITH         800                       800
      



回答と解説(問5)・・・答え:b
オブジェクト権限を付与するには、下記の SQL文を実行します。

GRANT オブジェクト権限[(列名)] 
 ON オブジェクト名
 TO {ユーザ名 | ロール名 | PUBLIC} [WITH GRANT OPTION];

オブジェクト名、およびユーザ名・ロール名は複数指定できます。複数指定する場合は、
それぞれをカンマ(,)で区切ります。
      



回答と解説(問6)・・・答え:a,f
各SQL*Plusコマンドの使用方法は、

■DESC・DESCRIBE
表の定義情報を確認する。「DESC [所有者名.]表名」

■GET
スクリプトファイルの内容を SQLバッファにロードする。「GET ファイル名」

■SAVE
SQL バッファ内の SQL文をファイルに保存する。「SAVE ファイル名 [APPEND | REPLACE]」
「APP[END]」は追記、「REP[LACE]」は上書きになります。
      



回答と解説(問7)・・・答え:b
■ビューの作成構文
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW ビュー名 [(列名,列名,・・・)] AS SELECT文
[WITH CHECK OPTION[CONSTRAINT 制約名]]
[WITH READ ONLY [CONSTRAINT 制約名]];

※制約名を省略した場合は、SYS_Cn書式で名前が作成される

※FORCE・NOFORCEオプション
元表の定義の有無のチェックを制御できる。 FORCEオプションを指定すると、元表が未定義で
もビューを作成可能。デフォルトは NOFORCEオプションが適用され、元表が未定義の場合には
ビューの作成が成功しない。

※WITH READ ONLYオプション
読取専用のビューを作成する。
      



回答と解説(問8)・・・答え:b
列見出しは、デフォルトで大文字になります。列名表示を変更するには、「列名 列別名」
または「列名 AS 列別名」で指定します。
上記は、empno列 と ename列+job列(別名EMP_info) なので、列見出しは「EMPNO EMP_info」
となります。
      



回答と解説(問9)・・・答え:a,e
外部キー制約(Foreign Key制約、参照整合性制約)は、参照元の列は外部キー、参照先の
列は親キーと呼ばれ、親子関係を保つ制約です。外部キー値がNULLであるか、または親キー
の値に一致する必要があります。
また、親キーの値を削除する場合に、子となるレコードがいる場合は削除できません。(ON
DELETE CASCADE オプションを使用する場合を除く)

そして、参照先の列(親キー)には、主キーまたは一意キー制約が定義されている必要があ
ります。親表として、自表の別の列を参照することも可能です。


※下記の例は、子表のDEPTNO列が親表のDEPTNO列を参照する外部キー制約です

○子表                   ○親表
NAME  DEPTNO             DEPTNO DEPTNAME
----- ------             ------ ------------
SCOTT 0001   ----------> 0001   SALES
JOHN  0002   ----------> 0002   CLERK
      



回答と解説(問10)・・・答え:c,e
SELECT文を記述する場合は、下記の語順になります。
・SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY
・SELECT - FROM - WHERE - HAVING - GROUP BY - ORDER BY

「GROUP BY」「HAVING」についてはどちらの順番でも記述できますが、
「ORDER BY」は最後に記述するようにします。
      












Copyright © 2006 mari. All rights reserved.