全選択照会の例

次の例は、全選択照会を示しています。

  • 例 1: EMPLOYEE 表からすべての列と行を選択します。
      SELECT * FROM EMPLOYEE
  • 例 2: EMPLOYEE 表の従業員で、その部門番号 (WORKDEPT) が E で始まる部門に属しているか、またはプロジェクト番号 (PROJNO) が MA2100、MA2110、または MA2112 である EMP_ACT 表のプロジェクトに割り当てられている従業員すべての従業員番号 (EMPNO) をリストします。
      SELECT EMPNO
         FROM EMPLOYEE
         WHERE WORKDEPT LIKE 'E%'
      UNION
      SELECT EMPNO
         FROM EMP_ACT
         WHERE PROJNO IN('MA2100', 'MA2110', 'MA2112')
  • 例 3: 例 2 と同じ照会を行い、さらに EMPLOYEE 表の行には 'emp'、EMP_ACT 表の行には 'emp_act' という"タグ"を付けます。例 2 の結果とは異なり、この照会では、同じ EMPNO が複数回戻され、付加される "タグ" によりどの表からとられたかが示されます。
      SELECT EMPNO, 'emp'
         FROM EMPLOYEE
         WHERE WORKDEPT LIKE 'E%'
      UNION
      SELECT EMPNO, 'emp_act' FROM EMP_ACT
         WHERE PROJNO IN('MA2100', 'MA2110', 'MA2112')
  • 例 4: 例 2 と同じ照会を行いますが、重複行が除去されないように UNION ALL を使用します。
      SELECT EMPNO
          FROM EMPLOYEE
          WHERE WORKDEPT LIKE 'E%'
      UNION ALL
      SELECT EMPNO
         FROM EMP_ACT
         WHERE PROJNO IN('MA2100', 'MA2110', 'MA2112')
  • 例 5: 例 3 と同じ照会を行いますが、現在どの表にもない 2 人の従業員を追加して、 それらの行に "new" というタグを付けます。
      SELECT EMPNO, 'emp'
         FROM EMPLOYEE
         WHEREWORKDEPTLIKE 'E%'
      UNION
      SELECT EMPNO, 'emp_act'
         FROM EMP_ACT
         WHERE PROJNO IN('MA2100', 'MA2110', 'MA2112')
      UNION
         VALUES ('NEWAAA', 'new'), ('NEWBBB', 'new')
  • 例 6: この EXCEPT の例は、T1 に存在し、T2 に存在しない行をすべて生成します。
       (SELECT * FROM T1)
       EXCEPT ALL
       (SELECT * FROM T2)
    NULL 値が関与していない場合、この例は次の例と同じ結果を戻します。
       SELECT ALL *
          FROM T1
          WHERE NOT EXISTS (SELECT * FROM T2
                              WHERE T1.C1 = T2.C1 AND T1.C2 = T2.C2 AND...)
  • 例 7: この INTERSECT の例は、表 T1 と T2 の両方にあるすべての行を生成し、重複した行を除去します。
       (SELECT * FROM T1)
       INTERSECT
       (SELECT * FROM T2)
    NULL 値が関与していない場合、この例は次の例と同じ結果を戻します。
       SELECT DISTINCT * FROM T1
          WHERE EXISTS (SELECT * FROM T2
                        WHERE T1.C1 = T2.C1 AND T1.C2 = T2.C2 AND...)
    ここで、C1、C2、などは T1 と T2 の列を表します。