ORACLE MASTER Bronze Database 11g押さえておきたい問題 SQL編

こんにちは。昼間です。

今回は、Bronze Oracle Database 11gの資格を取得するための第1ステップのSQLについてです。
Bronze Oracle Database 11gの資格を取得するためには、2つの試験に合格する必要があります。

ステップ1:「Bronze SQL 基礎Ⅰ」または「11g SQL基礎Ⅰ」のどちらかを合格
ステップ2:「Bronze DBA 11g」に合格

この2ステップを経てはじめてBronze Oracle Database 11gの資格を取得することができます。
今回は、私が受験した「Bronze SQL 基礎Ⅰ」の例題をいくつか紹介します。

回答は各問題の解説の最後に書いてあります!

ソートに関する問題

生徒名(SNAME列)を降順にソートするSELECT文を2つ選びなさい。


A. select sname, stuno from stu order by sname;

B. select sname NAME, stuno from stu order by sname desc;

C. select sname, stuno from stu order by 1 desc;

D. select sname, stuno from stu order by 1;

解説

ORDER BY句でソート順を省略すると、デフォルトのASC(昇順)で行がソートされます。
DESCを指定すると降順です。
昇順は数が小さい順、降順は数が大きい順ですね。

また、列別名やSELECT句の列リストの順番を、ORDER BY句の中で指定することができます。
選択肢CのORDER BY句で指定されている”1″は、列リストの1番目の列名NAMEを指し、ソート順はDESCが指定されています。
したがって、BとCが正解です。

解答:B, C

NULLを扱うことができる関数についての問題

COM列値がNULL, SAL列値が2500の場合、次の中から正しい説明を2つ選びなさい。


A. NVL(com, 0)の結果は、0である。

B. NVL2(com, sal, 0)の結果は、0である。

C. NULLIF(com, sal)の結果は、0である。

D. COALESCE(com, sal, 0)の結果は、0である。

解説

このNULLの使用に関する関数はややこしくて覚えるのが大変でした。
でも、この辺りはよく出ると思うのでしっかり覚えましょう。

関数               使用方法     説明
NVL               NVL(com, 0)     com列がNULLの場合は0を戻す
NVL2               NVL(com, sal+com, 0)     com列がNULLの場合は0、NULL以外の場合はsal+comを戻す
NULLIF               NULLIF(ename, mail)     enameとmailが等しい場合はNULL, 等しくない場合はenameを戻す
COALESCE COALESCE(com, sal, 15)     リストの最初のNULLでない式を戻す

A. NVL(com, 0)は、COM列がNULL値なので0が戻されるので正解です。
B. NVL2(com, sal, 0)は、COM列がNULL値なので0が戻されるので正解です。

解答:A, B

SELECT文についての問題

次のSELECT文の中からエラーにならないものを選びなさい


A. select sname, min(hiredate) from stu;

B. select deptno dept, avg(sal) avgsal from stu groupe by dept having avg(sal);

C. select deptno, job, max(sal) from stu group by deptno having max(sal);

D. select avg(sal) from stu having avg(sal);

解説

A. SELECT句でグループ関数と一緒に個々の列を指定する場合、その列をGROUP BY句でも指定する必要があります。
B. HAVING句を使っています。
 HAVING句には結果を戻すグループを選択するための条件式を指定します。
 問題文ではGROUP BY句の中で列別名を使っています。
 ORDER BY句以外では列別名を使えないので、エラーになります。
C. JOB列をGROUP BY句で指定していないのでエラーになります。
D. STU表を1つのグループとしてAVG関数を使っていますが、1つのグループでもHAVING句を使い選択できるのでエラーになりません。

解答:D

副問い合わせについての問題

EMP表にはEMPNO列、ENAME列、SAL列、DEPT列、DEPTNO列があります。副問い合わせを使う必要がある作業はどれですか。


A. 最高給与の社員を検索する。

B. 部署番号10の部署の平均給与を求める。

C. 部署別の最高平均給与を求める。

D. 社員番号1050のSALを1.5倍する。

解説

選択肢A~DのSQL文はそれぞれ次のようになります。

A. select * from emp where sal =(select max(sal) from emp);

B. select avg(sal) from emp where deptno = 10;

C. select max(avg(sal)) from emp group by deptno;

D. update emp set sal=sal*1.5 where empno=1050;

以上の中から、副問い合わせを使っているのは選択肢Aです。

解答:A

ビューに関する問題

単一ビューに関する説明として正しいものを2つ選びなさい


A. 複数の表からデータを導入する。

B. 関数を含まない。

C. ビューを通してINSERT、UPDATEおよびDELETE操作を実行できる。

D. データのグループを含む。

解説

ビューには単一ビューと複合ビューがあります。

単一ビューの特徴は次の通りです。

  • 一つの元表からデータを検索する。
  • データのグループ(GROUP BY句)を含まない。
  • 関数(グループ関数など)を含まない。
  • ビューを通してINSERT, UPDATEおよびDELETE操作が実行できる。

また、複合ビューの特徴は次の通りです。

  • 複数の表から検索する。
  • データのグループ(GROUP BY句)を含む。
  • 関数(グループ関数など)を含む。
  • 条件付きでビューを通したINSERT, UPDATEおよびDELETE操作が実行できる。

解答:B、C

まとめ

いかがだったでしょうか?

参考書などの問題を繰り返し解いて、問題に慣れていくのが大事だと思います。
落ち着いて解いて、ミスのないように気をつけて一発合格目指してください。

《関連記事》
ORACLE MASTER Bronze Database 11g 資格取得への道

記事をシェア
MOST VIEWED ARTICLES