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
まとめ
いかがだったでしょうか?
参考書などの問題を繰り返し解いて、問題に慣れていくのが大事だと思います。
落ち着いて解いて、ミスのないように気をつけて一発合格目指してください。