Set operators

UNION ; UNION ALL ; INTERSECT ; MINUS.

Opérateurs à utiliser entre des "tables" de même structure (même nombre de colonnes de même type).
Les doublons (lignes en double) sont automatiquement éliminées (sauf pour UNION ALL ).
ORDER BY peut être utilisé comme dernière instruction.
Les noms des colonnes du résultat sont les noms de la première table.
Les lignes sont triées par défaut par ordre croissant (sauf pour UNION ALL ).

UNION

Renvoie les lignes de toutes les tables, en éliminant les doublons.
Correspond à l'opération logique OU.

Exemple : afficher les employés dont le nom commence par A ou S.
SELECT ename FROM emp WHERE ename LIKE 'A%'
UNION
SELECT ename FROM emp WHERE ename LIKE 'S%';

UNION ALL

Fait la même chose que UNION sans élimier les doublons.

INTERSECT

Renvoie les lignes présentes dans chacune des tables, en éliminant les doublons.
Correspond à l'opération logique ET.

Exemple : afficher les employés dont le nom commence par A et finit par S.
SELECT ename FROM emp WHERE ename LIKE 'A%'
INTERSECT
SELECT ename FROM emp WHERE ename LIKE '%S';

MINUS

Renvoie les lignes présentes dans la première table, en enlevant les lignes présentes dans les tables suivantes.

Exemple : afficher les employés dont le nom commence par la troisième lettre est A et ne finissant pas par S.
SELECT ename FROM emp WHERE ename LIKE '__A%'
MINUS
SELECT ename FROM emp WHERE ename LIKE '%S';
Exemple : afficher les employés dont le nom commence par la troisième lettre est A et ne finissant ni par S ni par K.
SELECT ename FROM emp WHERE ename LIKE '__A%'
MINUS
SELECT ename FROM emp WHERE ename LIKE '%S'
MINUS
SELECT ename FROM emp WHERE ename LIKE '%K';

ORDER BY

SELECT ename, deptno FROM emp WHERE ename LIKE 'A%'
UNION
SELECT ename, deptno*2 FROM emp WHERE ename LIKE '%S'
ORDER BY deptno;
ATTENTION
SELECT * FROM emp WHERE ename LIKE 'A%'
UNION
SELECT * FROM emp WHERE ename LIKE '%S'
ORDER BY deptno;
n'est pas valide, car SQL ne reconnaît pas deptno parmi les champs de la première table.