←ホームへ戻る




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

ユーザSCOTT が、ユーザSMITHの EMP表に対するオブジェクト権限をすべて
ユーザJAMES から取り消す文として正しいものを1つ選びなさい。


a. REVOKE ALL ON SMITH.EMP FROM SCOTT;
b. REVOKE ALL ON JAMES.EMP FROM SCOTT;
c. REVOKE ALL ON SMITH.EMP FROM JAMES;
d. REVOKE ALL ON JAMES.EMP FROM SMITH;
      

→回答と解説



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

下記のSELECT文の結果として正しいものを選びなさい。

SELECT months_between('2006-6-30','2006-7-31') FROM dual;

a. 0
b. 1
c. -1
d. -1.03225806
e. エラーになる
      

→回答と解説



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

NLS_LANG環境変数の指定方法として正しいものを選びなさい。

a. JA16SJIS.Japan_Japanese
b. JA16SJIS.Japanese_Japan
c. Japan_Japanese.JA16SJIS
d. Japanese_Japan.JA16SJIS
      

→回答と解説



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

EMP 表のDEPTNO列に対し、部門数を検索するSELECT文として正しいものを選びなさい。

a. SELECT count(*) FROM emp;
b. SELECT count(deptno) FROM emp;
c. SELECT count(distinct deptno) FROM emp;
d. SELECT distinct count(deptno) FROM emp;
      

→回答と解説



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

下記の SQL文にて作成したビューの列名を選びなさい。

CREATE VIEW v_emp AS SELECT empno,ename,deptno,sal*6 FROM emp;

a. EMPNO ENAME DEPTNO SAL
b. EMPNO ENAME DEPTNO SAL*6
c. EMPNO ENAME DEPTNO ######
d. EMPNO ENAME DEPTNO 
e. エラー
      

→回答と解説



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

SQL*Plusの置換変数について、置換前と置換後の値を表示するためのコマンドとして
正しいものを選びなさい。

a. SET SQLPROMPT ON
b. SET CMDS ON
c. SET DEF ON
d. SET ECHO ON
e. SET TERMOUT ON
f. SET VERIFY ON
      

→回答と解説



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

下記の順番で SQL文が実行されます。最初にエラーとなる箇所を選びなさい。

1. CREATE TABLE emp (empno number primary key,ename varchar2(10) unique,deptno number);
2. INSERT INTO emp VALUES(1000,'SCOTT',20);
3. INSERT INTO emp VALUES(1050,'SMITH',20);
4. INSERT INTO emp VALUES(1111,NULL,10);
5. COMMIT;
6. DELETE FROM emp WHERE empno=1050;
7. INSERT INTO emp VALUES(1205,'SMITH',10);

a. 1
b. 3
c. 5
d. 7
e. エラーは発生しない
      

→回答と解説



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

EMP 表の社員番号(EMPNO)が1000である社員について、
給与(SAL)を1.2倍、部門コード(DEPTNO)を11にします。
UPDATE文として正しいものを選びなさい。

a. UPDATE emp SET deptno=11,sal=sal*1.2 WHERE empno=1000;
b. UPDATE emp SET deptno=11 and sal=sal*1.2 WHERE empno=1000;
c. UPDATE emp SET deptno=11 AND SET sal=sal*1.2 WHERE empno=1000;
d. UPDATE emp SET (deptno=11,sal=sal*1.2) WHERE empno=1000;
      

→回答と解説



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

順序に関する下記のSQL 文について、正しいものを1つ選びなさい。

SQL> conn user001/user001
SQL> create sequence seq_empno;
SQL> insert into emp values(seq_empno.nextval,'SCOTT','ANALYST'); ・・・A
SQL> insert into emp values(seq_empno.nextval,'ADAMS','CLERK'); ・・・B
SQL> grant select on seq_empno to user002;
SQL> conn user002/user002
SQL> select seq_empno.currval from dual; ・・・C

a. [A]empno列の値は0 [B]empno列の値は1 [C]検索結果は1
b. [A]empno列の値は0 [B]empno列の値は1 [C]検索結果は2
c. [A]empno列の値は0 [B]empno列の値は1 [C]検索結果はエラー
d. [A]empno列の値は1 [B]empno列の値は2 [C]検索結果は2
e. [A]empno列の値は1 [B]empno列の値は2 [C]検索結果は3
f. [A]empno列の値は1 [B]empno列の値は2 [C]検索結果はエラー
      

→回答と解説



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

SQL*Plusについて、バッファの現在行の文字列「empne」を「empno」に変換する
コマンドとして正しいものをすべて選びなさい。

a. change /empne/empno
b. change empne to empno
c. c/empne/empno
d. c/empne#empno
e. c#empne#empno
      

→回答と解説



回答と解説(問1)・・・答え:c
オブジェクト権限の取り消しは、下記のようになります。

REVOKE {オブジェクト権限 [,オブジェクト権限...] | ALL [PRIVILEGES]}
ON   [スキーマ名.]オブジェクト名
FROM {ユーザ名 | ロール名 | PUBLIC} [,{ユーザ名 | ロール | PUBLIC}...]
[CASCADE CONSTRAINTS];

よって、正解は「REVOKE ALL ON SMITH.EMP FROM JAMES;」となります。
      



回答と解説(問2)・・・答え:c
関数MONTHS_BETWEENの使用方法は以下のようになります。

■MONTHS_BETWEEN関数
MONTHS_BETWEEN(d1,d2)  日付d1とd2の間の月数を戻す

SQL> select months_between('15-12-01','15-01-01'),
            months_between('15-01-01','15-12-01') from dual;
DAY1        DAY2
----------- -----------
         11         -11


6月から7月を引いているため、結果は「-1」となります。
尚、一月未満の場合は、小数点で結果が戻されます。

SQL> select months_between('2006-6-1','2006-6-2') from dual;

MONTHS_BETWEEN('2006-6-1','2006-6-2')
-------------------------------------
                           -.03225806
      



回答と解説(問3)・・・答え:d
NLS_LANG変数は、「言語_地域.文字コードセット」の形式で指定します。
・言語:Oracleのメッセージ、月日の名前等
・地域:デフォルトの日付書式、十進数の表示規定等
・文字コードセット:接続するユーザやアプリケーションが使用する文字コード

デフォルトは英語であり、日本語の場合は、「Japanese_Japan.JA16EUC」、もし
くは「Japanese_Japan.JA16SJIS」と指定します。
      



回答と解説(問4)・・・答え:c
それぞれの検索結果は、下記のようになります。

count(*):NULL値を含む全行数を戻す
count(列名):NULL値を除く行数を戻す
count(distinct 列名):NULL値を除く「列名」列値の種類数を戻す

よって、正解は「c」となります。
      



回答と解説(問5)・・・答え:e
ビュー作成時、SELECT句に式が含まれる場合は、列別名を指定する必要があります。
上記では、 「sal*6」に列別名が指定されていないため、エラーとなります。
      



回答と解説(問6)・・・答え:f
それぞれは下記のようになります。

SQLPROMPT:SPL*Plusのプロンプトを指定
CMDS[EP]:複数のSQL*Plusコマンドを入力する場合の区切り文字
DEF[INE]:置換変数の接頭辞を設定(デフォルトは&)
ECHO:コマンドファイル内の実行コマンドを表示させるか否か
TERMOUT:コマンドファイルを実行する時に、実行結果を表示するか否か
VERIFY:置換変数を値に置き換える前後の値を表示するか否か
      



回答と解説(問7)・・・答え:e
1で作成された emp表は、empno列が主キーのため重複できません。また、ename列も
ユニーク制約が設定されているため、重複データは入れられません。ただし、ユニー
ク制約の場合、NULL値は許容されます。

2〜4では上記の条件を満たすため正常にINSERTされます。
5でCOMMITされ、6では3で入れたレコードが削除されます。
その後7で3と同名SMITH のレコードをINSERTしていますが、3のレコードは
削除済みなのでエラーにはなりません。
従って、正解は「e.エラーは発生しない」です。
      



回答と解説(問8)・・・答え:a
UPDATE文は、下記のようになります。また、WHERE句の条件を指定しない場合は、
全行が更新されます。また、対象のデータが存在しない場合は0行更新となり、
エラーにはなりません。

UPDATE 表名 SET 列名=値 [,列名=値,…] [WHERE 条件];
      



回答と解説(問9)・・・答え:f
順序は、一意な値を生成するためのオブジェクトとして使用されます。
データベースを再起動した場合も、値は初期値には戻りません。

ここでは、順序を作成(すべてデフォルト値を採用)した後、A、BのINSERT文
を発行しています。「seq_empno.nextval」により、Aは1、Bは2の値が取得さ
れ、emp表にINSERTされます。
その後、別ユーザにて現在のシーケンス(順序)番号を検索しています。
現在値は2ですが、「seq_empno.currval」を使用すると、「現ユーザが
採番した最後の番号を返す」ということになります。USER002はその時点では、
まだ順序を使用していない(nextvalにより取得していない)ので、エラーと
なります。


※作成
CREATE SEQUENCE 順序名
 [START WITH 初期値]
 [INCREMENT BY 増分]
 [MAXVALUE 最大値 | NOMAXVALUE]
 [MINVALUE 最小値 | NOMINVALUE]
 [CYCLE | NOCYCLE]
 [CACHE メモリ上にキャッシュする値 | NOCACHE];

※使用
「順序名.NEXTVAL」:順序オブジェクトの定義に従い、新しい番号を採番
「順序名.CURRVAL」:直近に採番された値を参照(現ユーザが採番した最後の番
          号を返す、現ユーザが一度も採番していない場合はエラー)
      



回答と解説(問10)・・・答え:a,c,e
SQL*Plusバッファ内の文字列を変換する場合は、「c/変換前/変換後」
「change/変換前/変換後」などと指定します。
また、変換の区切り文字「/」は「#」のように別の文字列も使用できます。

実行例を示します。
SQL> select * from dual;	・・・SQL 文を実行(バッファに入る)

SQL> c/dual/emp		・・・「dual」を「emp」に変更
  1* select * from emp
SQL> l			・・・バッファの中身を表示
  1* select * from emp
      












Copyright © 2006 mari. All rights reserved.