L'operatore di intersezione SQL viene utilizzato per combinare due o più istruzioni SELECT, ma visualizza solo i dati simili all'istruzione SELECT.
La sintassi per l'operazione INTERSECT:
SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME1 INTERSECT SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME2;
Le regole da seguire utilizzando l'operatore INTERSECT sono le seguenti:
- Il numero di colonne e l'ordine delle colonne devono essere gli stessi.
- Il tipo di dati deve essere compatibile.
Comprendiamo il concetto di SQL INTERSECT con l'aiuto di esempi.
Considera le seguenti tabelle insieme ai record forniti.
Tabella 1:Studente
ID_STUDENTE | 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 | NICHIL | 60 | 75 | 80 | 215 |
5 | YOGESH | 56 | 65 | 78 | 199 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VIGNETO | 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 |
Tabella 2:Stud
ID_STUDENTE | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
4 | NICHIL | 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 | VIGNETO | 85 | 90 | 100 | 275 |
Esempio 1: Eseguire una query per eseguire l'operazione INTERSECT tra la tabella Student e la tabella Stud.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD;
Nella query precedente, abbiamo utilizzato due query SELECT. La prima query SELECT recupera i dati dalla tabella Student. Esegue l'operazione INTERSECT con i dati recuperati dalla seconda query SELECT che recupera i dati dalla tabella Stud. Vengono selezionati solo record simili tra queste due tabelle.
L'output della query precedente è:
ID_STUDENTE | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
4 | NICHIL | 60 | 75 | 80 | 215 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VIGNETO | 85 | 90 | 100 | 275 |
9 | SANKET | 86 | 78 | 65 | 229 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Vengono visualizzati solo i record comuni tra la tabella Studenti e le tabelle Stud.
Esempio 2: Eseguire una query per eseguire l'operazione INTERSECT tra la tabella Student e la tabella Stud ma visualizzare solo i record Student dalla tabella Stud in cui i voti matematici sono pari a 100.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS = 100;
L'output della query precedente è:
ID_STUDENTE | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VIGNETO | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Vengono visualizzati solo i record degli studenti i cui voti matematici sono pari a 100 dalla tabella Stud e sono comuni tra la tabella Student e la tabella Stud.
Esempio 3: Eseguire una query per eseguire l'operazione INTERSECT tra la tabella Student e la tabella Stud, ma visualizzare solo i record Student dalla tabella Student in cui i voti di chimica sono maggiori di 80.
SELECT * FROM STUDENT WHERE CHEMISTRY_MARKS > 80 INTERSECT SELECT * FROM STUD;
L'output della query precedente è:
ID_STUDENTE | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VIGNETO | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Vengono visualizzati solo i record degli studenti i cui voti di chimica sono maggiori di 80 dalla tabella Studente e sono comuni sia tra la tabella Studente che la tabella Stud.
Esempio 4: Eseguire una query per eseguire l'operazione INTERSECT tra la tabella Studente e la tabella Stud e visualizzare solo i record Studente in cui i voti di fisica sono maggiori di 75 dalla Tabella Studente e selezionare le seconde query che visualizzano solo i record Studente in cui i voti di matematica sono maggiori di 90 dalla tabella Studente Stallone.
SELECT * FROM STUDENT WHERE PHYSICS_MARKS > 75 INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS > 90;
L'output della query precedente è:
ID_STUDENTE | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VIGNETO | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Vengono visualizzati solo i record degli studenti i cui voti di fisica sono maggiori di 75 dalla tabella Studente e i voti di matematica sono maggiori di 90 dalla tabella Stud e sono comuni sia tra la tabella Studente che la tabella Stud.