前回お話したとおり,ORACLE MASTER Bronzeは,次の2つの試験に合格する必要があります。

1Z0-017J:Bronze SQL基礎I
1Z0-041J:Bronze DBA10g

 今回は各試験の内容をもう少し具体的にお話しましょう。

 「1Z0-017J:Bronze SQL基礎I」は,次に示すような,リレーショナル・データベースの操作言語であるSQLの基本知識を問うものです(意味が分からなくても心配しないでください。詳しくは次回以降に説明します)。

 データベース・プログラマではなくても,データベースを管理する人にとっても,基本的なSQL(注1)コマンドの知識は必要です。また,SQLコマンドを理解することで,リレーショナル・データベースでどんなことができるのかが分かってきます。

●基本のSELECT文

 表,列,行という用語を覚えておくのは,大前提です。そのうえで,SQLのSELECT文(問合わせ=検索を行う文)で実現できる「射影」(特定の列を指定し,取り出すこと),「選択」(特定の行を指定し,取り出すこと),「結合」(複数表の行同士を一致させること)という用語も覚えておきましょう(図1)。

図1●SELECT文でできること

 SELECT文では,特定の行を取り出すための条件式を指定することもできます。さらに,表示する行を昇順(小さい順)や降順(大きい順)に並び替えて表示することもできます。条件式に使用する比較演算子や並び替えの方法を中心に学習するとよいでしょう。

●単一行関数の使用

 SQLでは,様々な関数を使えます。関数は「単一行関数」と「グループ関数」の2種類に分類できます。

 「単一行関数」とは,一つの行(の中の値)を入力にして,一つの値を戻す関数です(図2)。単一行関数の一つである「文字関数」(文字を入力して値を戻す)には,UPPER(アルファベットを大文字にして戻す)やLENGTH(文字数を戻す)などがあります。

 文字関数のほかにも,「数値関数」(数値を入力して値を戻す),「日付関数」(日付を入力して値を戻す),「変換関数」(別のデータ型に変換して戻す)などがあります。関数でどんなことができるのかを知っていると,複雑なプログラムをコーディングする必要が少なくなる可能性があるので,どのような関数があるのかを知っておくことは仕事にも役立ちます。

●グループ関数の使用

 グループ関数は複数の行(の中の値)を入力にして,一つの値を戻す関数です(図2)。SUM(合計),AVG(平均)などがあります。また,GROUP BY句(句は文の中で使用するキーワードです)を使用して,(ある列で)同じ値を持つ行を1つの処理単位とすることができます。これらを使うことで,部門ごとの給与の合計や平均を求めることができます。

図2●単一行関数(LENGTH)とグループ関数(SUM)

●結合

 異なる表の行を一つの行のように表示することを結合と言います。リレーショナル・データベースは,「一つの事象を一元管理しよう」という考えに沿って,表を設計します。このため,必要なデータを表示しようと思ったときには,複数の表からデータを持ってこなければいけない場合があります。このときに利用するのが結合です。

 結合を実現する方法には,SELECT文の中のFROM句に複数の表名を指定する記述方法がありますが,試験対策としては,SQL99(注2)構文と呼んでいるJOIN句を使用した方法を覚えておきましょう。

●集合演算子

 異なる表の行を一つ行として表示するのが結合ですが,複数の問合わせから戻された異なる表の行を,一つの表から取り出したかのように扱うことができるのが「集合演算子」です。集合演算子としては,UNION,UNION ALL,MINUS,INTERSECTがあります(詳しくは次回以降で説明します)。

●副問合せ

 問合わせをするときに,別の問合せ結果を条件にしなければならない場合があります。問合わせの条件になる別の問合わせのことを「副問合せ」と言います。例えば,最も給与の多い人の名前を求めるためには,最初に最も多い給与とはいくらなのかを求めなければいけません。それを副問合せにし,そこから返ってきた結果を基に名前を求める必要があります。「こういうことをしたい」と言われたときに,結合にしろ,副問合せにしろ,自由にSQL文が書けるようにしておかなければいけません。

●DML文(INSET,UPDATE,DELETE)

 SQLは,SELECT文による問合せだけでなく,新規行の挿入(INSERT)や既存行の削除(DELETE),既存行のある列の値の更新(UPDATE)を行うことができます。これらの複数の操作を一つの「トランザクション」と呼ばれる処理単位にすることもできます。このトランザクションの管理についても,修得しておく必要があります。

●オブジェクトの作成

 これは,「9i Silver Fellow」(Oracle9iの認定パスの一つ:前回参照)の場合は,「Oracle入門(1Z0-012)」という試験に含まれていた内容です。「データベースオブジェクト」と呼ばれる「表」,「ビュー」,「索引」,「順序」,「シノニム」の作成や削除に関する注意事項を理解しておく必要があります(詳しくは次回以降で説明します)。

●データ・ディクショナリ・ビューの使用

 データベースオブジェクトの情報は,データベース内の「内部表」で管理されています。内部表は,直接問合せを行うのではなく,ビューとしてアクセスできるようになっています。これがデータ・ディクショナリです。実際に,データベース管理を行うようになれば,大変有益な情報を提供してくれるものであることが分かるでしょう。

 いかがでしょうか?ここまでが,「1Z0-017J:Bronze SQL基礎I」試験の範囲です。  基本的な内容を問う試験とは言え,あいまいな覚え方では,正解できないような問題も出題されます。「SQLなら,新入社員研修で習ったことがある」と言う人も,改めて本連載で復習することをお勧めします。