データの選択(SELECT)
では、ここからは実際にSQLを使ってデータベースに対して操作をしていきます。まずは、従業員(EMPLOYEE)表から従業員のデータを取り出すとした場合、どのようなクエリー
を書くか見ていきましょう。先ほどSQLは英語の構文に似ていると言いましたが、英語で命令文を書く場合どのような構文になりますか?英語で命令文を作るとき、動詞から始まりますよね?SQLでクエリーを書く場合も動詞から始まめます。SQLにはいろいろな命令(動詞)がありますが、データを取り出す場合は「SELECT」を使います。
データを取り出す為のSELECT文の構文は、以下のように書くことができます。
構文の中の斜字体の部分は、取り出す内容によって毎回変わります。いきなり構文を見せられてもちょっと困りますよね。では、次のようにしてみるとどうでしょうか?
SELECTと取り出す列の指定をSELECT句、FROMと取り出す表の指定をFROM句と言います。ちなみにクエリーでは命令の大文字、小文字を区別しません。ですので「SELECT」を「Select」や「select」と記述することもできます。このSELECTを使ったクエリーをSELECT文とも呼びます。クエリーの最後についているセミコロン「;」ですが、これはクエリーの終わりを意味しています。では、従業員表からデータを取り出す場合のクエリーを見てみましょう。図4は、従業員表からデータを取り出すクエリーとその結果を表しています。
図4にあるようなクエリーを実行することで、従業員表に格納されている従業員のデータをすべて取得することができます。全ての列を取得したい場合は、列名を記述するところで、「*」を使います。このように非常にシンプルな記述で従業員のデータを選択することができます。さて、先程の例は全ての行を取得するようなクエリーでしたので、次は行を絞り込むために条件を指定します。例えば、部門コード(DEPTNO)が「20」の従業員だけを選択したい場合、次のようなクエリーを記述します。
先ほどのクエリーと比較するとWHEREの記述がうしろにつきました。このように、取得するデータに条件を付ける場合は、WHEREを使って、その後ろに条件を指定します。このWHEREと条件を「WHERE句」と呼びます。
これまでの例では、全ての列を取り出してきましたが、実際に取り出したいデータは必要な部分だけで良いですよね。その場合は、SELECTの後ろに取り出したい列をカンマで区切って指定します。図6は、取り出したい列だけを取り出すクエリーとその実行結果です。このように、SELECT文にて列を取り出すことを「射影」と言います。