今回はSQLのクエリで最もよく使う、SELECT、FROM、WHEREについて説明します。
ほぼすべてのクエリでSELECT、FROM、WHEREは使用しますのでデータベースを使う場合はまずはここを理解していきましょう。
クエリとは何か?
まず、クエリについてですが、データベースから取得するデータを指定したり、集計したりする問い合わせのことです。
この問い合わせは、SQLを使って書かれることがほぼすべてなので、「クエリはSQLを使って書く」と覚えてもいいでしょう。
どのクエリにもSELECT、FROM、WHEREを使用します。
まずはこの3つの意味を理解するところからSQLの理解は始まります。
SELECTはデータを取り出したい列名を指定する
SELECT句はデータベースのテーブルからどの列を抜き出すかを指定するのに使います。
例えば以下のようなテーブルがあるとします。
テーブルにはitemと名前がついているとします。
この中から、item_codeとitem_nameの列を抜き出したいとします。
その場合、以下のようにまずはクエリを書きます。
SELECT item_code, item_name
ただ、この表記だけだとどのテーブルから列を抽出すればいいかが分かりません。
そのため、どのテーブルから指定したいかを指定する表記が必要になります。
FROMはどこからデータを取得したいかを指定する
SELECT句によりどの列を取得したいかを指定した後、どこから取得したいかを指定する必要があります。
そこで利用するのがFROM句です。
SELECTの説明をした時に書いたクエリに以下のように付け足してみましょう。
SELECT item.item_code, item.item_name
FROM item
この段階で上記のクエリを実行できるので、実行してみます。
itemのテーブルからitem_code、item_nameの列を正しく抜き出すことが出来ました。
なお、上記のクエリはSELECT句の先頭にテーブル名を記載していますが、テーブル名は省略することが可能です。
ただし、省略することが出来ない場合もあります。
この省略することが出来ない例についても別途記事を作成して、そこで説明をしていく予定です。
FROM句にはテーブルだけでなく、ビュー、シノニムなども指定することが出来ます。
ビュー、シノニムに関する説明は別途行いますので、今の段階ではそんなものがあるんだなという理解で以降の記事を読み進めていただければと思います。
ここまででデータベースのテーブルからデータを抽出できたのですが、条件を付けてデータを抽出したい場合も多々あります。
その場合に使うのがWHERE句になります。
次節で説明します。
WHERE句は条件を付けてデータを抽出したい場合に用いる
SELECT句、FROM句とともに覚えておく必要があるのがWHERE句です。
WHERE句はデータの抽出条件を指定するもので、データをデータベースのテーブルから抽出する場合、たいていは条件を指定してデータを抽出することになります。
プルダウンの選択など、全てのデータを抽出してそのデータをそのまま使うというケースもありますが、画面にデータを表示する時や検索機能を実装する時は、たいていWHERE句を使って条件を指定してデータの絞り込みを行います。
最初にお見せしたitemというテーブルをもう一度見てみます。
この中からpriceが300以下のデータを抜き出したい場合を考えて見ます。
列はすべて取得するとします。
この場合、クエリは以下のように書くことが出来ます。
SELECT *
FROM item
WHERE item.price <= 300
SELECT *の表記は、FROM句で指定したテーブルのすべての項目を抽出するという書き方です。
項目を一つずつ書いてもいいのですが、全ての項目を1つのテーブルから抽出する場合など、一つずつ書く必要がない場合は「*」を使って書いた方が断然楽です。
このクエリを実行すると以下のように、priceが300以下のデータを正常に取得することが出来ました。
まとめ
今回はSQLの基礎として、SELECT句、FROM句、WHERE句について説明しました。
要点は以下の通りです。
- SELECT句は取得する列を指定する
- FROM句は取得する対象のテーブル名などを指定する
- WHERE句は取得するデータの条件を指定する
SQLの基礎としてSELECT句、FROM句、WHERE句は必ず覚えておかなければならず、まずはこの3つの役割を理解していないと、SQLクエリを書くことが出来ません。
なので、データベースを取り扱うプロジェクトを担当する場合は、前提条件としてSELECT句とFROM句、WHERE句を必ず覚えておく必要があります。
今回の記事はここまでとなります。
また次の記事でお会いしましょう。