機能
テーブルからデータ行を取得します
文法
|
(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を記述します。 |