Database
 sql >> Base de données >  >> RDS >> Database

Opérateurs SET en SQL

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 :

  1. Opérateur UNION.
  2. Opérateur UNION ALL'.
  3. Opérateur INTERSECT.
  4. 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 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 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.