全查询示例
以下示例说明全查询。
- 示例 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)如果不涉及空值,那么此示例将返回与以下值相同的结果:
其中 C1, C2等表示 T1 和 T2的列。SELECT DISTINCT * FROM T1 WHERE EXISTS (SELECT * FROM T2 WHERE T1.C1 = T2.C1 AND T1.C2 = T2.C2 AND...)