SQL intersect-operator wordt gebruikt om twee of meer SELECT-instructies te combineren, maar het geeft alleen de gegevens weer die vergelijkbaar zijn met de SELECT-instructie.
De syntaxis voor de INTERSECT-bewerking:
SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME1 INTERSECT SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME2;
Regels die moeten worden gevolgd met de INTERSECT-operator zijn als volgt:
- Het aantal kolommen en de volgorde van kolommen moet hetzelfde zijn.
- Gegevenstype moet compatibel zijn.
Laten we het concept van SQL INTERSECT begrijpen met behulp van voorbeelden.
Bekijk de volgende tabellen samen met de gegeven records.
Tabel 1:Leerling
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 |
Tabel 2:Dekhengst
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 |
Voorbeeld 1: Voer een query uit om de INTERSECT-bewerking uit te voeren tussen de studententafel en de Stud-tafel.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt de gegevens op uit de tabel Student. Het voert de INTERSECT-bewerking uit met de gegevens die zijn opgehaald door de tweede SELECT-query die de gegevens uit de Stud-tabel ophaalt. Alleen vergelijkbare records tussen deze twee tabellen worden geselecteerd.
De uitvoer van de bovenstaande zoekopdracht is:
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 |
Alleen gemeenschappelijke records tussen de Student Table en de Stud-tafels worden weergegeven.
Voorbeeld 2: Voer een query uit om de INTERSECT-bewerking uit te voeren tussen Studententabel en Stud-tabel, maar geef alleen die Student-records uit de Stud-tabel weer waar wiskundecijfers gelijk zijn aan 100.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS = 100;
De uitvoer van de bovenstaande zoekopdracht is:
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 |
Alleen de records van de studenten worden weergegeven waarvan de wiskundecijfers gelijk zijn aan 100 uit de Stud-tabel en die gemeenschappelijk zijn voor zowel de Student- als de Stud-tabel.
Voorbeeld 3: Voer een query uit om de INTERSECT-bewerking uit te voeren tussen Studententafel en Stud-tabel, maar toon alleen die Studentrecords van de Studententabel waar scheikundecijfers groter zijn dan 80.
SELECT * FROM STUDENT WHERE CHEMISTRY_MARKS > 80 INTERSECT SELECT * FROM STUD;
De uitvoer van de bovenstaande zoekopdracht is:
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 |
Alleen de records van de studenten worden weergegeven waarvan de scheikundecijfers hoger zijn dan 80 uit de studententabel en die gemeenschappelijk zijn tussen zowel de studenten- als de studtafel.
Voorbeeld 4: Voer een query uit om de INTERSECT-bewerking uit te voeren tussen de studententabel en de Stud-tabel en geef alleen die studentrecords weer waarvan de natuurkundecijfers groter zijn dan 75 van de studententabel, en selecteer vervolgens de query's die alleen die studentrecords weergeven waar de wiskundecijfers groter zijn dan 90 van de Dekhengst.
SELECT * FROM STUDENT WHERE PHYSICS_MARKS > 75 INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS > 90;
De uitvoer van de bovenstaande zoekopdracht is:
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 |
Alleen de records van de studenten worden weergegeven waarvan de natuurkundecijfers hoger zijn dan 75 uit de studententabel en de wiskundecijfers hoger zijn dan 90 uit de dektabel en zijn gemeenschappelijk voor zowel de student- als de stuwtafel.