L'opérateur utilisé pour joindre ou combiner deux requêtes n'est autre que les opérateurs SET. Les opérateurs classés en opérateurs SET sont les suivants :
- Opérateur UNION.
- Opérateur UNION ALL'.
- Opérateur INTERSECT.
- Opérateur MINUS.
Les règles à suivre pour opérer avec SET Operator sont les suivantes :
- Le nombre de colonnes et l'ordre des colonnes doivent être identiques.
- Le type de données doit être compatible.
Comprenons chacun des opérateurs SET avec des exemples.
Considérez les tableaux suivants avec les enregistrements donnés.
Tableau 1 :Employés
ID EMPLOYEE | FIRST_NAME | LAST_NAME | SALAIRE | VILLE | DÉPARTEMENT | MANAGERID | WORKING_HOURS | GENRE |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORACLE | 1 | 12 | F |
1002 | VAIBHAV | SHARMA | 60000 | NOÏDA | ORACLE | 1 | 9 | M |
1003 | NIKHIL | VANI | 50000 | JAIPUR | FMW | 2 | 10 | M |
2001 | PRACHI | SHARMA | 55500 | CHANDIGAR | ORACLE | 1 | 10 | F |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 | 12 | M |
2003 | RUCHIKA | JAIN | 50000 | Bombay | TEST | 4 | 9 | F |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 | 9 | F |
3002 | ANUJA | OÙ | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | DEEPAM | JAUHARI | 58500 | Bombay | JAVA | 3 | 12 | M |
4001 | RAJESH | GOUD | 60500 | Bombay | TEST | 4 | 10 | M |
Table 2 :Employé.
ID EMPLOYEE | FIRST_NAME | LAST_NAME | SALAIRE | VILLE | DÉPARTEMENT | MANAGERID | WORKING_HOURS | GENRE |
1001 | Vaibhav | Sharma | 65000 | PUNE | ORACLE | 1 | 12 | M |
1002 | Nikhil | Vani | 60000 | NOÏDA | ORACLE | 1 | 9 | M |
1003 | Vaibhavi | Mishra | 50000 | JAIPUR | FMW | 2 | 10 | F |
2001 | Ruchika | Jaïn | 55500 | CHANDIGAR | ORACLE | 1 | 10 | F |
2002 | Prachi | Sharma | 65500 | PUNE | FMW | 2 | 12 | F |
2003 | Bhavesh | Jaïn | 50000 | Bombay | TEST | 4 | 9 | M |
3001 | Deepam | Jauhari | 55500 | PUNE | JAVA | 3 | 9 | M |
3002 | ANUJA | OÙ | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | Pranotti | Shendé | 58500 | Bombay | JAVA | 3 | 12 | F |
4001 | RAJESH | GOUD | 60500 | Bombay | TEST | 4 | 10 | M |
Table 3 :Responsable.
ID gestionnaire | nom_du_responsable | manager_department |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manich | JAVA |
4 | Anupam Mishra | TEST |
Tableau 4 :Gestionnaire 1.
ID gestionnaire | nom_du_responsable | manager_department |
1 | Ishita Agrawal | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manich | JAVA |
4 | Paul Oakip | TEST |
Opérateur UNION
L'opérateur UNION est le premier opérateur utilisé pour fusionner ou combiner les deux ou plusieurs instructions SELECT. Si et seulement si leur nombre de colonnes et l'ordre des colonnes sont les mêmes.
Les lignes dupliquées ne seront pas prises en compte dans le résultat obtenu après l'exécution de l'opération UNION.
La syntaxe de l'opération UNION est la suivante,
SELECT * FROM TABLE_NAME1 UNION SELECT * FROM TABLE_NAME2;
Exemple 1 : Exécutez une requête pour effectuer l'opération UNION entre la table Employés et la table Employés.
SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère les données des employés et la deuxième requête SELECT récupère les données des données des employés, et l'opération UNION est effectuée sur les deux requêtes SELECT.
L'opération UNION supprimera les lignes en double entre les deux tables. La sortie suivante s'affiche comme :
Les deux enregistrements de table sont affichés à l'exception des enregistrements en double.
Exemple 2 : Exécutez une requête pour effectuer l'opération UNION entre la table Employees et la table Employee. Mais affichez uniquement les enregistrements des employés de la table des employés qui appartiennent à la ville de Mumbai et de la table des employés, uniquement les enregistrements des employés dont le salaire est supérieur à 50 000 et inférieur à 60 000.
SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION SELECT * FROM EMPLOYEE WHERE SALARY > 50000 AND SALARY < 60000;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La requête First SELECT récupère uniquement les enregistrements dont l'employé appartient à la ville de Mumbai à partir de la table Employés. Et effectuez l'opération UNION avec la deuxième requête SELECT pour récupérer uniquement les enregistrements dont le salaire de l'employé est supérieur à 50 000 mais inférieur à 60 000 dans la table des employés. L'opération UNION supprimera les lignes en double entre les deux tables.
La sortie suivante s'affiche comme :
Les deux enregistrements de table sont affichés à l'exception des enregistrements en double.
Exemple 3 : Exécutez une requête pour effectuer l'opération UNION entre la table Employees et la table Employee. Nous ne voulons que les enregistrements de la table Employés dont la ville des employés appartient à 'Pune' et 'Jaipur'.
SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'JAIPUR') UNION SELECT * FROM EMPLOYEE;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère les enregistrements dont les employés appartiennent aux villes "Pune" et "Jaipur" de la table Employés. L'opération UNION est effectuée avec les enregistrements extraits de la seconde requête SELECT de la table employee.
L'opération UNION supprimera les lignes en double entre les deux tables. La sortie suivante s'affiche comme :
Comme nous pouvons tous le voir, les cinq premiers résultats sont les employés qui appartiennent à la ville de Pune ou de Jaipur. Et les autres enregistrements proviennent de la table des employés, la deuxième requête SELECT.
Les deux enregistrements de table sont affichés à l'exception des enregistrements en double.
Exemple 4 : Exécutez une requête pour effectuer l'opération UNION entre la table Employees et la table Employee. Nous ne voulons que les enregistrements de la table Employee dont le prénom commence par V.
SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE WHERE FIRST_NAME LIKE 'V%';
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère tous les enregistrements de la table Employees. L'opération UNION est effectuée avec les enregistrements extraits de la seconde requête SELECT de la table employee dont le prénom commence par 'V'.
L'opération UNION supprimera les lignes en double entre les deux tables. La sortie suivante s'affiche comme :
Comme nous le pouvons tous, les 10 premiers résultats proviennent de la table Employés, et les autres proviennent de la table Employés dont le prénom commence par 'V'.
Exemple 5 : Exécutez une requête pour effectuer une opération UNION entre la table Manager et la table Manager1.
SELECT * FROM MANAGER UNION SELECT * FROM MANAGER1;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère les données du gestionnaire et la deuxième requête SELECT récupère les données des données manager1, et l'opération UNION est effectuée sur les deux requêtes SELECT.
L'opération UNION supprimera les lignes en double entre les deux tables. La sortie suivante s'affiche comme :
Les deux enregistrements de table sont affichés à l'exception des enregistrements en double.
UNION TOUS LES Opérateurs
L'opérateur UNION ALL combine toutes les données des deux requêtes. Dans l'opérateur UNION, les enregistrements en double n'étaient pas pris en compte dans le résultat, mais UNION ALL considérait les enregistrements en double dans le résultat obtenu après l'exécution de l'opération UNION ALL.
La syntaxe de l'opération UNION ALL est la suivante,
SELECT * FROM TABLE_NAME1 UNION ALL SELECT * FROM TABLE_NAME2;
Exemple 1 : Exécutez une requête pour effectuer l'opération UNION ALL entre la table Employees et la table Employee.
SELECT * FROM EMPLOYEES UNION ALL SELECT * FROM EMPLOYEE;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère les données des employés et exécute l'opération UNION ALL avec les données récupérées par la deuxième requête SELECT récupère les données de la table des employés.
La sortie suivante s'affiche comme :
Tous les enregistrements seront affichés à partir des tables Employees et Employee, les enregistrements en double seront également affichés lorsque nous effectuerons l'opération UNION ALL.
Exemple 2 : Exécutez une requête pour effectuer l'opération UNION ALL entre la table Employees et la table Employee. Mais affichez uniquement les enregistrements des employés de la table des employés qui appartiennent à la ville de Mumbai. Dans la table des employés, seuls les enregistrements des employés dont le salaire est de 60500 et la ville est "Mumbai".
SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION ALL SELECT * FROM EMPLOYEE WHERE SALARY = 60500 AND CITY = 'MUMBAI';
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La requête First SELECT récupère uniquement les enregistrements dont l'employé appartient à la ville de Mumbai à partir de la table Employés. Et effectuez l'opération UNION ALL avec la deuxième requête SELECT pour récupérer uniquement les enregistrements dont le salaire de l'employé est 60500 et la ville est "Mumbai" à partir de la table des employés.
La sortie suivante s'affiche comme :
Les deux enregistrements de table sont affichés, y compris les enregistrements en double lorsque nous effectuons des opérations UNION ALL.
Exemple 3 : Exécutez une requête pour effectuer l'opération UNION entre la table Employees et la table Employee. Nous ne voulons que les enregistrements de la table Employés dont la ville des employés appartient à 'Pune', 'Mumbai' et 'Jaipur'.
SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'MUMBAI', 'JAIPUR') UNION ALL SELECT * FROM EMPLOYEE;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère les enregistrements dont les employés appartiennent aux villes "Pune", "Mumbai" et "Jaipur" de la table Employés. L'opération UNION ALL est effectuée avec les enregistrements extraits de la seconde requête SELECT de la table employee.
La sortie suivante s'affiche comme :
Les deux enregistrements de table sont affichés, y compris les enregistrements en double lorsque nous effectuons des opérations UNION ALL.
Exemple 4 : Exécutez une requête pour effectuer l'opération UNION ALL entre la table Manager et la table Manager1.
SELECT * FROM MANAGER UNION ALL SELECT * FROM MANAGER1;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère les données de Manager et exécute les opérations UNION ALL avec les données récupérées par la deuxième requête SELECT récupère les données de la table manager1.
La sortie suivante s'affiche comme :
Tous les enregistrements seront affichés à partir des tables Manager et Manager1 ; les enregistrements en double sont affichés lorsque nous effectuons des opérations UNION ALL.
Opérateurs INTERSECT
L'opérateur d'intersection est utilisé pour combiner deux ou plusieurs instructions SELECT, mais il n'affiche que les données similaires à l'instruction SELECT.
La syntaxe de l'opération INTERSECT est la suivante,
SELECT * FROM TABLE_NAME1 INTERSECT SELECT * FROM TABLE_NAME2;
Exemple 1 : Exécutez une requête pour effectuer une opération INTERSECT entre la table Employés et la table Employés.
SELECT * FROM EMPLOYEES INTERSECT SELECT * FROM EMPLOYEE;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère les données des employés et effectue une opération INTERSECT avec les données récupérées par la deuxième requête SELECT récupère les données de la table des employés.
La sortie suivante s'affiche comme :
Seuls les enregistrements similaires seront affichés à partir des deux tables, car nous avons effectué l'opération INTERSECT entre la table Employés et la table Employés.
Exemple 2 : Exécutez une requête pour effectuer une opération INTERSECT entre la table Manager et la table Manager1.
SELECT * FROM MANAGER INTERSECT SELECT * FROM MANAGER1;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère les données du gestionnaire et effectue l'opération INTERSECT avec les données récupérées par la deuxième requête SELECT récupère les données de la table Manager1.
La sortie suivante s'affiche comme :
Seuls les enregistrements similaires seront affichés à partir des deux tables, car nous avons effectué l'opération INTERSECT entre la table Manager et la table Manager1.
Opérateurs MOINS
L'opérateur MINUS est utilisé pour renvoyer les lignes présentes dans la première requête mais absentes dans le reste des requêtes sans doublons.
La syntaxe de l'opération MOINS est la suivante.
SELECT * FROM TABLE_NAME1 EXCEPT SELECT * FROM TABLE_NAME2;
Remarque : Le mot-clé MINUS est pris en charge uniquement dans les bases de données ORACLE. Nous pouvons utiliser le mot-clé EXCEPT pour d'autres bases de données afin d'effectuer une opération similaire.
Exemple 1 : Exécutez une requête pour effectuer l'opération MOINS entre la table Employés et la table Employés.
SELECT * FROM EMPLOYEES EXCEPT SELECT * FROM EMPLOYEE;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère les données des employés et effectue l'opération MINUS avec les données récupérées par la deuxième requête SELECT récupère les données de la table des employés.
La sortie suivante s'affiche comme :
Seuls les enregistrements sans correspondance seront affichés à partir des deux tables, car nous avons effectué l'opération MOINS entre la table Employés et la table Employés.
Exemple 2 : Exécutez une requête pour effectuer l'opération MINUS entre la table Manager et la table Manager1.
SELECT * FROM MANAGER EXCEPT SELECT * FROM MANAGER1;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La première requête SELECT récupère les données du gestionnaire et effectue l'opération MINUS avec les données récupérées par la deuxième requête SELECT récupère les données de la table Manager1.
La sortie suivante s'affiche comme :
Seuls les enregistrements sans correspondance seront affichés à partir des deux tables, car nous avons effectué l'opération MOINS entre la table Manager et la table Manager1.