logo
     

メニュー
↓ SQL ↓
データ取得の基本(SELECT)

取得条件の指定(WHERE)

計算式を利用する

取得データの並べ替え
      (ORDER BY)


別名を付ける

データを集計(グループ化)する

テーブルの結合
      (INNER JOIN)


テーブルの結合
      (OUTER JOIN)


テーブルの結合
      (CROSS JOIN)


重複行の排除(DISTINCT)

副問い合わせ(サブクエリ)

相関副問い合わせ
      (相関サブクエリ)


⇒クエリの結合

文字列値を連結する

文字列の一部を取り出す

文字列を置換する

NULLを置き換える

条件によって置き換える

↓SQL Server 2012 Express↓
SQL Server 2012 Express
      インストール


SQL Server 2012 Express
      ネットワークの構成


SQL Server 2012 Express
      ログインユーザの作成


SQL Server 2012 Express
      データベースの作成


SQL Server 2012 Express
      テーブルの作成


SQL Server 2012 Express
      SQLの実行


復旧モデルとバックアップ

↓ 番外編 ↓
Windows Server 2012 評価版
      インストール


Windows Server 2012
      スタートメニュー利用方法


Windows Server 2012
      シャットダウン・再起動方法


Windows Server 2012
      サーバーマネージャ自動起動無効


Windows Server 2012
      コンピュータ名・ドメイン変更


クエリの結合



2つのクエリの出力を比較し、和・積・差の3種類で結合することができます。
 和結合:UNION, UNION ALL
 積結合:INTERSECT
 差結合:EXCEPT(OracleではMINUS)

文法:SELECT * | <列名1>, <列名2>…
   FROM <テーブル名>
   <WHERE 条件式>…
   [UNION | UNION ALL | INTERSECT | EXCEPT | MINUS]
   SELECT * | <列名1>, <列名2>…
   FROM <テーブル名>
   <WHERE 条件式>…
※1つ目のクエリと2つ目のクエリでは、
 抽出される列数とデータ型が一致している必要があります


***例(UNION)***
UNIONは和結合であり、ALLを指定しない場合は、
取得したデータの和(いずれかのクエリで抽出されたもの)から
重複するデータを排除してデータを取得します。
例では、1月1日と1月2日のいずれかに売り上げのあった商品の一覧を出力します。

[売上表]
売上日 商品名 売上数量 売上金額
2013/01/01 りんご 3 300
2013/01/01 みかん 8 960
2013/01/01 ぶどう 10 500
2013/01/02 りんご 5 500
2013/01/02 みかん 2 240
2013/01/02 バナナ 1 200

[実行SQL]
SELECT 商品名 FROM 売上表 WHERE 売上日 = '2013/01/01'
UNION
SELECT 商品名 FROM 売上表 WHERE 売上日 = '2013/01/02'

[結果]
商品名
りんご
みかん
ぶどう
バナナ


***例(UNION ALL)***
UNIONは和結合であり、ALLを指定した場合は、
取得したデータの和(いずれかのクエリで抽出されたもの)から
重複するデータを含み取得します。
例では、1月1日と1月2日のいずれかに売り上げのあった商品の一覧を出力します。

[売上表]
売上日 商品名 売上数量 売上金額
2013/01/01 りんご 3 300
2013/01/01 みかん 8 960
2013/01/01 ぶどう 10 500
2013/01/02 りんご 5 500
2013/01/02 みかん 2 240
2013/01/02 バナナ 1 200

[実行SQL]
SELECT 商品名 FROM 売上表 WHERE 売上日 = '2013/01/01'
UNION ALL
SELECT 商品名 FROM 売上表 WHERE 売上日 = '2013/01/02'

[結果]
商品名
りんご
みかん
ぶどう
りんご
みかん
バナナ


***例(INTERSECT)***
INTERSECTは積結合であり、
取得したデータの積(両方のクエリで抽出されたもの)を取得します。
例では、1月1日と1月2日の両方に売り上げのあった商品の一覧を出力します。

[売上表]
売上日 商品名 売上数量 売上金額
2013/01/01 りんご 3 300
2013/01/01 みかん 8 960
2013/01/01 ぶどう 10 500
2013/01/02 りんご 5 500
2013/01/02 みかん 2 240
2013/01/02 バナナ 1 200

[実行SQL]
SELECT 商品名 FROM 売上表 WHERE 売上日 = '2013/01/01'
INTERSECT
SELECT 商品名 FROM 売上表 WHERE 売上日 = '2013/01/02'

[結果]
商品名
りんご
みかん


***例(EXCEPT | MINUS)***
EXCEPT(Oracle では MINUS)は差結合であり、
取得したデータの差(1つ目のクエリで取得されたものから
2つ目のクエリで取得されたものを除いたもの)を取得します。
例では、1月1日に売り上げがあり、1月2日に売り上げのなかった商品の
一覧を出力します。

[売上表]
売上日 商品名 売上数量 売上金額
2013/01/01 りんご 3 300
2013/01/01 みかん 8 960
2013/01/01 ぶどう 10 500
2013/01/02 りんご 5 500
2013/01/02 みかん 2 240
2013/01/02 バナナ 1 200

[実行SQL]
--SQL Server, PostgreSQLの場合
SELECT 商品名 FROM 売上表 WHERE 売上日 = '2013/01/01'
EXCEPT
SELECT 商品名 FROM 売上表 WHERE 売上日 = '2013/01/02'

--Oracleの場合
SELECT 商品名 FROM 売上表 WHERE 売上日 = '2013/01/01'
MINUS
SELECT 商品名 FROM 売上表 WHERE 売上日 = '2013/01/02'

[結果]
商品名
ぶどう

<<PR>> ネットワークセキュリティを見直しませんか
価格:300円
現役SEが語るSEの仕事あれこれ-これから就職を希望する人へ-
価格:300円