Oracle MASTERインチキ合格講座

Oracle MASTERの問題を解くための考え方です。対象はBRONZEのsql編です。

基本的な考え方

四択のうちから答えを一つ選べれば良いです。選ぶ経過はどうでもよいです。
(選ぶ経過の例)

  • 正しい答えを一つを特定できればOKです。
  • 誤った答えを三つを特定できればOKです。
  • 誤った答えを二つを特定できた場合、サイコロを振れば50%OKです。
  • 全く特定できない場合は、問題ごと捨てればOKです。他の問題でカバーしましょう。(捨てたとしても、選択肢は選びましょう)

なるべく自身を持って答えを特定するために、以下のことを理解しておきます。

列別名の付け方

列別名の付け方は以下の3通りです。

  • select salary * 12 AS AnnualSarary
  • select salary * 12 AnnualSarary
  • select salary * 12 "AnnualSarary"

ダブルクォート("")を使用した場合のみ、列別名に空白を含めることができます。

  • × select salary * 12 AS Annual Sarary
  • × select salary * 12 Annual Sarary
  • ○ select salary * 12 "Annual Sarary"

SQL文の句の並び

SQL文の句は、以下の順に並びます。

  • SELECT 列名,… FROM テーブル名 WHERE 条件 GROUP BY 集計のキー HAVING 集計結果の条件 ORDER BY 並べ替えのキー
  • INSERT INTO テーブル名 (列名,…) VALUES(値,…)
  • UPDATE テーブル名 SET 列名 = 値,… WHERE 条件
  • DELETE テーブル名 WHERE 条件

SQL(SELECT)文の評価

SELECT文は以下の順序で評価します。





(1)グループ関数がない場合:

  1. WHERE句の条件でレコードを絞り込みます。
  2. ORDER BY句のキー順にレコードを並べ替えます。
  3. SELECT句に指定された列だけを取得します。


(2)グループ関数があり、GROUP BY句がない場合:

  1. WHERE句の条件でレコードを絞り込みます。
  2. グループ関数ですべてのレコードを集約します。
  3. ORDER BY句のキー順にレコードを並べ替えます。


(3)グループ関数があり、GROUP BY句もある場合:

  1. WHERE句の条件でレコードを絞り込みます。
  2. GROUP BY句のキー毎に、グループ関数でレコードを集約します。
  3. HAVING句の条件でレコードを絞り込みます。
  4. ORDER BY句のキー順にレコードを並べ替えます。

※実行して挙動を確かめるとよいでしょう。

SQL(UPDATE)文の実行

UPDATE文は以下の順序で評価します。

  1. WHERE句でレコードを絞り込みます。
  2. SET句の右辺の値を計算します。
  3. SET句の左辺の列に計算結果を代入します。

※実行して挙動を確かめるとよいでしょう。

グループ関数




  • グループ関数は5つあります。
    • count() … レコード件数
    • min() … 最小値
    • max() … 最大値
    • sum() … 合計値
    • avg() … 平均値

  • count()以外のグループ関数では、引数に指定する値に特別な制限はありません。NULLや文字列、数値、日付など、何でも指定できます。

  • グループ関数は2つまでネストできます。GROUP BYとグループ関数(1つ目)による集計結果に対して、さらにグループ関数(2つ目)を適用できます。
    • (例) select max(count(emp_id)) from employee group by dept_cd;

※実行して挙動を確かめるとよいでしょう。

副問い合わせ

  • SQL文の内部にSELECT文を埋め込むことができます。埋め込まれるSELECT文を副問い合わせといいます。
  • 副問い合わせは、SELECT句、FROM句、WHERE句、SET句、INSERT文に指定できます。
    • SELECT句、SET句の副問い合わせは、単一の値(1列×1行)を返す必要があります。
    • WHERE句で『=』と一緒に使用する副問い合わせは、単一の値(1列×1行)を返す必要があります。
    • WHERE句で『IN』と一緒に使用する副問い合わせには、複数の値(1列×複数行)を指定できます。
    • FROM句とINSERT文で使用する服問い合わせには、結果セット(複数列×複数行)を指定できます。

※実行して挙動を確かめるとよいでしょう。

集合演算子

UNION以外はあまり使いません。言葉だけ覚えましょう。

  • UNION … 和
  • MINUS … 差
  • INTERSECT … 積

SQLの分類

SQLは三つに区分されます。
(1) DML(Data Manipulation Language:データ操作言語) … データを操作します。

  • SELECT文
  • INSERT文
  • UPDATE文
  • DELETE文

(2) DDL(Data Definition Language:データ定義言語) … データの入れ物を定義します。

  • CREATE文
  • ALTER文
  • DROP

(3) DCL(Data Control Language:データ操作言語) … その他。

  • GRANT文
  • REVOKE文
  • COMMIT文
  • ROLLBACK文


なお、ここに書いてある内容をすべて覚えたとしても、試験の合格は保証できません。