機能
テーブルからデータ行を取得します
文法
(1)
|
SELECT 列,・・・ FROM テーブル |
テーブルから全データを取得します。 |
(2) |
SELECT 列,・・・ FROM テーブル WHERE 条件 |
テーブルから条件に該当するデータを取得します。 |
(3)
|
SELECT DISTINCT 列,・・・ FROM テーブル |
テーブルからデータを取得します。 但し、重複するデータは排除します。 |
(4)
|
SELECT 列,・・・ FROM テーブル ORDER BY 順列・・・ |
テーブルからソートした状態でデータを取得します。 |
(5)
|
SELECT グループ関数列,・・・ FROM テーブル GROUP BY グループ列,・・・ |
テーブルからグループ列でグルーピングしてグループ関数列を取得します。 |
(6)
|
SELECT グループ関数列,・・・ FROM テーブル GROUP BY グループ列,・・・ HAVING グループ関数列条件 |
テーブルからグループ列でグルーピングしてグループ関数列を取得します。 但し、グループ関数列条件に該当しない結果データは排除します。 |
WHERE | 条件に該当するデータのみを取得したい場合に、WHEREに続けて条件式を記述します。 又テーブルを結合する条件もここに記述します。 |
DISTINCT | SELECTの直後に記述すると結果データから重複するデータが排除されます。重複データもすべて取得する場合は、DISTINCTではなくALLを記述するのですが、デフォルトなので通常は記述しません。 |
ORDER BY | データを昇順にソートした状態で取得します。 降順に取得したい場合は、順列の後ろにDESCを記述します。 昇順はASCを記述しますが、 デフォルトなので記述する必要はありません。 |
GROUP BY | グルーピングして集計などを行います。 列が集約されるので、取得する列には何を返すのかを指示するグループ関数を記述しなければなりません。 |
HAVING | グルーピングした結果に対して取得する条件を指定します。 WHEREに似ていますが、WHEREは元のデータに対するもので、HAVINGはグルーピングした結果に対しての条件です。 |
ここで紹介している文法は、代表的な使い方を抜粋したものです。
解説
(1)
|
SELECT 列,・・・ FROM テーブル WHERE句による対象データの絞り込みが無いので、全件対象となります。 SELECT COUNT(*) FROM テーブル |
(2) |
SELECT 列,・・・ FROM テーブル WHERE 条件 WHEREには、取得したデータの条件を記述します。 WHERE 列1 = 1 条件は論理演算子を使って複合条件を記述することもできます。 WHERE 列1 = 1 AND 列2 < 1000 |
(3)
|
SELECT DISTINCT 列,・・・ FROM テーブル DISTINCTは取得データに対して機能するものなので、記述するのはSELECT後ろに1つだけです。たくさん書いちゃダメですよ。 SELECT DISTINCT 列1,列2,列3 FROM テーブル1 |
(4)
|
SELECT 列,・・・ FROM テーブル ORDER BY 順列・・・ ORDER BYのソート順は、項目の後ろに記述します。 SELECT 列1,列2,列3 FROM テーブル1 ORDER BY 列1 DESC ORDER BYを指定していない場合のデータ順は保証されていないので、順番が大事な場合はかならず指定しましょう。 |
(5)
|
SELECT グループ関数列,・・・ FROM テーブル GROUP BY グループ列,・・・ GROUP BYは集計する場合に使用します。 SELECT 列1,MAX(列2) FROM テーブル1 GROUP BY 列1 |
(6)
|
SELECT グループ関数列,・・・ FROM テーブル GROUP BY グループ列,・・・ HAVING グループ関数列条件 HAVINGは集計した結果に対して取得条件を指定したい場合に使用します。 SELECT 列1,MAX(列2) FROM テーブル1 GROUP BY 列1 HAVING MAX(列2) < 100 |
全列を取得するには | テーブルの全列を取得する場合は、列・・・の部分にアスタリスク「*」を記述します。 アスタリスク「*」を指定すると、列順はテーブルに定義されている順になります。 SELECT * FROM テーブル |
複数のテーブルから列を取得する
(横の結合) |
複数のテーブルから列を取得するには、テーブル間でのデータの繋がり方をWHEREに記述しなければなりません。 又取得する項目がどのテーブルのものなのかも記述しなければなりません。 SELECT テーブル1.列2 テーブル2.列3 FROM テーブル1, テーブル2 WHERE テーブル1.列1 = テーブル2.列1 テーブル名が長いなどの理由でわかりにくい場合は、 SELECT A.列2 B.列3 FROM テーブル1 A, テーブル2 B WHERE A.列1 = B.列1 となります。 |
複数のテーブルからデータをまとめて取得する
(縦の結合) |
複数のテーブルからデータを取得する場合は、それぞれのテーブルからデータを取得するSQLECT文をUNIONで結合することによりまとめて取得することができます。 但し、まとめて取得するのですから、それぞれのテーブルから取得する列の構成は一致していなければなりません。 SELECT * FROM テーブル1 UNION SELECT * FROM テーブル2 ちなみにUNIONで結合すると重複するデータは排除されるので、すべて取得したい場合は、UNION ALLを記述します。 |