SQLテキスト |
1.関係演算(選択、射影、結合)
2.行の選択
3.行をまとめる
4.結合
5.副問い合わせ(サブクエリー)
6.相関副問い合わせ
7.スカラー副問い合わせ
1.
関係演算(選択、射影、結合)
1.1.選択(Selection)
テーブル(表)の中から条件に合ったカラム(行)を取り出す操作。
SELECT * FROM 表名 WHERE 条件式 |
1.2.射影(Projection)
テーブルの中から全てのカラムの選択したデータ項目(列)を取り出す操作。
SELECT 列名 FROM 表名 |
1.3.結合(Join)
複数のテーブルを1つのテーブルにする操作。
SELECT 表名1.列名,表名2.列名 FROM 表名1,表名2 |
表名1の各カラムに表名2の各カラムが結合する。(表名1のカラム数 × 表名2のカラム数となる。)これを直積と呼ぶ。
2.
行の選択
2.1.比較演算子
選択したいテーブルの任意のデータ項目に対し、指定された値との比較の結果が「真」であるカラムを返す。
SELECT 列名
FROM 表名
WHERE 列名 = 値 |
比較演算子 |
意味 |
= |
等しい |
> |
大きい |
>= |
以上 |
< |
小さい |
<= |
以下 |
<>またはNOT= |
等しくない |
2.2.論理演算子
条件式同士を組み合わせて条件式と論理演算子の結果が最終的に「真」であるカラムを返す。
SELECT 列名
FROM 表名
WHERE 条件式 AND 条件式 |
論理演算子 |
論理演算 |
意味 |
AND |
論理積 |
かつ |
OR |
論理和 |
または |
NOT |
否定 |
でない |
2.3.LIKE演算子(パターンマッチング)
選択したいテーブルの任意のデータ項目に対し文字列を指定し、それを含む値をもつカラムを返す。指定した文字列がデータのどの部分に当たるかを“%”で指定する。
SELECT 列名
FROM 表名
WHERE 列名 LIKE 文字列 |
使用例 |
意味 |
××% |
前方一致 |
%×× |
後方一致 |
%××% |
中間一致 |
2.4.BETWEEN演算子
選択したいテーブルの任意のデータ項目に対し値を指定し、その範囲内にあるカラムを返す。
SELECT 列名
FROM 表名
WHERE 列名 BETWEEN 値1 AND 値2 |
2.5.IN述語
選択したいテーブルの任意のデータ項目に対し値を指定し、それと一致するカラムを返す。
SELECT 列名
FROM 表名
WHERE 列名 IN(値1,値2,…) |
3.
行をまとめる
3.1.DISTINCT
任意のデータ項目で同一の値が複数のカラムにわたってある場合、1つの行にまとめる。(COUNT句を使用した場合は本来のカラムの分だけカウントされる。)
SELECT DISTINCT列名 FROM 表名WHERE 条件式 |
3.2.GROUP BY
任意のデータ項目で同一の値が複数のカラムにわたってある場合、1つの行に集約する。(COUNT句を使用した場合、元の複数のカラムは1行分としてカウントされる。)
SELECT 列名 FROM 表名WHERE 条件式 GROUP BY 列名 |
※HAVING
グループ化されたカラムに対して抽出条件を設定する。(WHERE句はグループ化される前のデータの抽出条件。)
SELECT 列名
FROM 表名WHERE 条件式 GROUP BY 列名 HAVING 条件式 |
4.
結合
4.1.単純結合(直積)
2つ以上の任意のテーブルのカラムをすべてつなげる。結合されたテーブルは各テーブルの全てのデータ項目を持ち、全てのカラムが出力される。
SELECT 表名1.列名,表名2.列名 FROM 表名1,表名2 |
4.2.等価結合(INNER JOIN)
2つ以上の任意のテーブルのカラムのうち、指定されたデータ項目同士の値が一致するカラムをつなげる。(条件に一致するカラムのみが表示される。)
SELECT 列名 FROM 表名1,表名2 WHERE 表名1.列名 = 表名2.列名 |
SELECT 列名 FROM 表名1 INNER JOIN 表名2 ON 表名1.列名 = 表名2.列名 |
4.3.外部結合
2つ以上の任意のテーブルのカラムのうち、指定されたデータ項目同士の値が一致するカラムをつなげる。(条件が不一致のカラムでもデータ項目をNULL値として全てのカラムを出力する)
SELECT 列名 FROM 表名1 LEFT JOIN 表名2 ON 表名1.列名 = 表名2.列名 |
SELECT 列名
FROM 表名1 RIGHT JOIN 表名2 ON 表名1.列名 = 表名2.列名 |
5.
副問い合わせ(サブクエリー)
データ項目の抽出条件に選択されたカラムの値を使用する。決まった値や計算値ではなく、抽出結果を抽出条件に利用できる。
5.1.単一データの副問い合わせ
副問い合わせの結果が1行の場合、結果セットの任意のカラムと指定したカラムの値を比較する。
SELECT 列名
FROM 表名1 WHERE列名 = (SELECT 列名 FROM 表名2 WHERE条件式) |
5.2.複数データの副問い合わせ
副問い合わせの結果が複数になる場合、結果セットの任意カラムの値と指定したカラムの値が一致する行を表示する。
SELECT 列名
FROM 表名1 WHERE列名 IN (SELECT 列名 FROM 表名2 WHERE条件式) |
5.3.指定表に対する副問い合わせ(インラインビュー)
従来の指定される表の代わりに副問い合わせの結果を利用する。(副問い合わせの結果からさらに条件式でカラムを選択するイメージ。)
SELECT 列名
FROM (SELECT 列名 FROM 表名 WHERE条件式) WHERE条件式 |
6.
相関副問い合わせ
副問い合わせを実施してから主問い合わせを実行するのではなく、対象となる表の任意のデータ項目同士の値で副問い合わせを行い、その結果セットで主問い合わせを実施する。
SELECT 列名
FROM 表名1 WHERE列名 = (SELECT 列名 FROM 表名2 WHERE 表名1.列名 = 表名2.列名) |
6.1.EXISTS
主問い合わせを副問い合わせの結果セットが返ってきた場合だけ実施する。
SELECT 列名
FROM 表名1 WHERE EXISTS (SELECT 列名 FROM 表名2 WHERE条件式) |
6.2.ANY
主問い合わせを副問い合わせの結果セット及び指定されたデータ項目で比較し、一致するカラムがあった場合に実施する。
SELECT 列名
FROM 表名1
WHERE 列名 比較演算子 ANY (SELECT 列名 FROM 表名2 WHERE条件式) |
6.2.ALL
主問い合わせを副問い合わせの結果セットおよび指定されたデータ項目で比較し、全てのカラムが一致した場合に実施する。
SELECT 列名
FROM 表名1
WHERE 列名 比較演算子 ALL (SELECT 列名 FROM 表名2 WHERE条件式) |
7.
スカラー副問い合わせ
7.1.一列の問い合わせ
主問い合わせの表と任意のデータ項目の値が一致するカラムの指定データ項目を主問い合わせの結果セットに含める。
SELECT 列名1 , (SELECT 列名2 FROM 表名2 WHERE 表名2.列名 = 表名1.列名),列名3 FROM 表名1 |
7.1.複数の列の問い合わせ
主問い合わせの表と任意のデータ項目の値が一致するカラムの複数指定データ項目を主問い合わせの結果セットに含める。
SELECT 列名1 , CURSOR (SELECT 列名2,列名3 FROM 表名2 WHERE 表名2.列名 = 表名.列名) FROM 表名1 |