全查询示例

以下示例说明全查询。

  • 示例 1: 从 EMPLOYEE 表中选择所有列和行。
      SELECT * FROM EMPLOYEE
  • 示例 2:  List the employee numbers (EMPNO) of all employees in the EMPLOYEE table whose department number (WORKDEPT) either begins with 'E' who are assigned to projects in the EMP_ACT table whose project number (PROJNO) equals 'MA2100', 'MA2110', or 'MA2112'.
      SELECT EMPNO
         FROM EMPLOYEE
         WHERE WORKDEPT LIKE 'E%'
      UNION
      SELECT EMPNO
         FROM EMP_ACT
         WHERE PROJNO IN('MA2100', 'MA2110', 'MA2112')
  • 示例 3: 生成与示例 2 中相同的查询,此外,使用 "emp" 标记 EMPLOYEE 表中的行,使用 "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 ,仅包括当前不在任何表中的另外两名员工,并将这些行标记为 "新"。
      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)
    如果不涉及空值,那么此示例将返回与以下值相同的结果:
       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)
    如果不涉及空值,那么此示例将返回与以下值相同的结果:
       SELECT DISTINCT * FROM T1
          WHERE EXISTS (SELECT * FROM T2
                        WHERE T1.C1 = T2.C1 AND T1.C2 = T2.C2 AND...)
    其中 C1, C2等表示 T1 和 T2的列。