II-22-6. SQLを用いた問い合わせ処理

SQLを用いたデータの検索、問合せ処理の手順を示す。検索の基本となるSELECT文について説明し、式や数値、文字列、日付といったデータの処理や、WHERE句による演算、集合関数などについて解説する。

【学習の要点】

* 表から指定した条件を満たす行の集合列を取り出すには「SELECT」文を使用する。

* FROM句で指定した表からSELECT句で指定した列名の列だけを取り出し、WHERE句で指定した検索条件を満たす行を取り出す。

* 指定した列で同じ値を持つ行の集計結果を取り出すには、GROUP BY句とCOUNT、MAXなどの集計関数を使用する。

図II-22-6. SQLを用いた問い合わせ結果

【解説】

1) データ取得(SELECT)

テーブルのデータを取得するには、「SELECT」文を使用する。SELECTの次に抽出したい参照フィールド名を記述する。ここに参照したいフィールドを列挙して必要なフィールドを取得することができる。「*」は指定したテーブルに存在する全てのフィールドを取得することができる。「FROM」句の次に抽出対象のテーブルを記述する。

記述例:

 SELECT `shinamei`, `tanka` FROM `hinmoku`;

2) 検索条件(WHERE)

検索条件を指定し特定のレコードを取得する場合には、SELECTに続いて「WHERE」句を用いる。条件に用いる演算子として「=」(等しい)、「!=」(等しくない)、「IN」(いずれかが含まれる)などを使用できる。

記述例:

SELECT * FROM `hinmoku` WHERE `tanka` > 890;

3) 集合関数(集計関数)

集合関数を用いることにより、抽出した結果を集計したり検索条件に該当するものの中から、最大値や平均値等を取得することができる。集合関数として、AVG(平均値)、SUM(合計値)、MAX(最大値)、MIN(最小値)等がある。

記述例:

 SELECT MAX(`tanka`) FROM `hinmoku` WHERE `tanka` < 1000;

4) 文字列関数 日付関数

文字列関数や日付関数を用いることにより日付や文字列を操作することができる。例えば、「DAYOFMONTH」関数は日を得る関数である。RDBMSの種類によって関数の有無や名称が異なる場合が多い点に留意するべきである。

記述例:

SELECT DAYOFMONTH(`tourokubi`) FROM `hinmoku`;

5) グループ化

「GROUP BY」句を使うと、同フィールド内の値が同一である場合に複数のレコードをグループ化して取得することができる。また、集合関数をあわせて使うことにより、グループ化された項目のグループ内を集計することができる。

記述例:

SELECT `tourokubi` , COUNT(`tourokubi`) FROM `hinmoku` GROUP BY `tourokubi`;

6) 並べ替え

「ORDER BY」句を使うとレコードを指定したフィールドでソートして取得できる。 「ASC」句は昇順でソートし、「DESC」句は降順でソートする。

記述例:

SELECT * FROM `hinmoku` WHERE `tanka` < 1000 ORDER BY `tanka` DESC;

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。