L'opérateur d'intersection SQL 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 :
SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME1 INTERSECT SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME2;
Les règles à suivre en utilisant l'opérateur INTERSECT sont les suivantes :
- Le nombre de colonnes et l'ordre des colonnes doivent être identiques.
- Le type de données doit être compatible.
Comprenons le concept de SQL INTERSECT à l'aide d'exemples.
Considérez les tableaux suivants avec les enregistrements donnés.
Tableau 1 :Élève
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
1 | NEHA | 85 | 88 | 100 | 273 |
2 | VISHAL | 70 | 90 | 82 | 242 |
3 | SAMKEET | 75 | 88 | 96 | 259 |
4 | NIKHIL | 60 | 75 | 80 | 215 |
5 | YOGESH | 56 | 65 | 78 | 199 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
9 | SANKET | 86 | 78 | 65 | 229 |
10 | PRACHI | 90 | 80 | 75 | 245 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Tableau 2 :Goujon
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
4 | NIKHIL | 60 | 75 | 80 | 215 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
9 | SANKET | 86 | 78 | 65 | 229 |
101 | SNEHA | 85 | 88 | 100 | 273 |
102 | SAMKEET | 70 | 90 | 82 | 242 |
103 | VISHAL | 75 | 88 | 96 | 259 |
105 | YOGESHWARI | 56 | 65 | 78 | 199 |
106 | VINAY | 85 | 90 | 100 | 275 |
107 | PRASHAKA | 90 | 80 | 75 | 245 |
8 | VINEET | 85 | 90 | 100 | 275 |
Exemple 1 : Exécutez une requête pour effectuer une opération INTERSECT entre la table Student et la table Stud.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD;
Dans la requête ci-dessus, nous avons utilisé deux requêtes SELECT. La requête First SELECT récupère les données de la table Student. Il effectue une opération INTERSECT avec les données récupérées par la deuxième requête SELECT qui récupère les données de la table Stud. Seuls les enregistrements similaires entre ces deux tables sont sélectionnés.
Le résultat de la requête ci-dessus est :
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
4 | NIKHIL | 60 | 75 | 80 | 215 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
9 | SANKET | 86 | 78 | 65 | 229 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Seuls les enregistrements communs entre la table Student et les tables Stud sont affichés.
Exemple 2 : Exécutez une requête pour effectuer une opération INTERSECT entre la table Student et la table Stud, mais affichez uniquement les enregistrements Student de la table Stud où les notes mathématiques sont égales à 100.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS = 100;
Le résultat de la requête ci-dessus est :
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Seuls les enregistrements des étudiants sont affichés dont les notes en mathématiques sont égales à 100 dans la table Stud et sont communes aux tables Student et Stud.
Exemple 3 : Exécutez une requête pour effectuer une opération INTERSECT entre la table Student et la table Stud, mais affichez uniquement les enregistrements Student de la table Student où les notes de chimie sont supérieures à 80.
SELECT * FROM STUDENT WHERE CHEMISTRY_MARKS > 80 INTERSECT SELECT * FROM STUD;
Le résultat de la requête ci-dessus est :
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Seuls les enregistrements des étudiants sont affichés dont les notes en chimie sont supérieures à 80 dans la table des étudiants et sont communes aux tables des étudiants et des étudiants.
Exemple 4 : Exécutez une requête pour effectuer une opération INTERSECT entre la table Student et la table Stud et affichez uniquement les enregistrements Student dont les notes en physique sont supérieures à 75 dans la table Student, puis sélectionnez les requêtes qui affichent uniquement les enregistrements Student dont les notes en mathématiques sont supérieures à 90 dans la table Goujon.
SELECT * FROM STUDENT WHERE PHYSICS_MARKS > 75 INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS > 90;
Le résultat de la requête ci-dessus est :
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Seuls les enregistrements des étudiants sont affichés dont les notes en physique sont supérieures à 75 dans la table des étudiants et les notes en mathématiques sont supérieures à 90 dans la table des goujons et sont communes aux tables des étudiants et des goujons.