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 queUNION
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
- Par défaut, les résultats sont triés par ordre croissant de la première colonne de la première table.
- Il est possible de spécifier une clause globale
ORDER BY
comme dernière instruction. - Seuls les colonnes de la première table peuvent être utilisés dans le
ORDER BY
. - Les requêtes unitaires ne peuvent pas avoir de clause
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.