Операторът за пресичане на SQL се използва за комбиниране на два или повече оператора SELECT, но показва само данните, подобни на оператора SELECT.
Синтаксисът за операцията INTERSECT:
SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME1 INTERSECT SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME2;
Правилата, които трябва да се спазват при използване на оператор INTERSECT са следните:
- Броят на колоните и редът на колоните трябва да са еднакви.
- Типът данни трябва да е съвместим.
Нека разберем концепцията за SQL INTERSECT с помощта на примери.
Разгледайте следните таблици заедно с дадените записи.
Таблица 1:Студент
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | ОБЩО_МАРКИ |
1 | NEHA | 85 | 88 | 100 | 273 |
2 | ВИШАЛ | 70 | 90 | 82 | 242 |
3 | SAMKEET | 75 | 88 | 96 | 259 |
4 | НИХИЛ | 60 | 75 | 80 | 215 |
5 | ЙОГЕШ | 56 | 65 | 78 | 199 |
6 | АНКИТА | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | ВИНЕЕТ | 85 | 90 | 100 | 275 |
9 | SANKET | 86 | 78 | 65 | 229 |
10 | PRACHI | 90 | 80 | 75 | 245 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | ВИШАЛ | 75 | 88 | 96 | 259 |
Таблица 2:Шип
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | ОБЩО_МАРКИ |
4 | НИХИЛ | 60 | 75 | 80 | 215 |
6 | АНКИТА | 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 | ВИШАЛ | 75 | 88 | 96 | 259 |
105 | ЙОГЕШВАРИ | 56 | 65 | 78 | 199 |
106 | VINAY | 85 | 90 | 100 | 275 |
107 | ПРАШАКА | 90 | 80 | 75 | 245 |
8 | ВИНЕЕТ | 85 | 90 | 100 | 275 |
Пример 1: Изпълнете заявка за извършване на операция INTERSECT между Студентска маса и Студентска таблица.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD;
В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича данните от таблицата Student. Той извършва операция INTERSECT с данните, извлечени от втората заявка SELECT, която извлича данните от таблицата Stud. Избрани са само подобни записи между тези две таблици.
Изходът от горната заявка е:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | ОБЩО_МАРКИ |
4 | НИХИЛ | 60 | 75 | 80 | 215 |
6 | АНКИТА | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | ВИНЕЕТ | 85 | 90 | 100 | 275 |
9 | SANKET | 86 | 78 | 65 | 229 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | ВИШАЛ | 75 | 88 | 96 | 259 |
Показват се само общи записи между Student Table и Stud Tables.
Пример 2: Изпълнете заявка за извършване на операция INTERSECT между таблицата на Студент и таблицата на Stud, но показвайте само онези записи на Student от таблицата Stud, където оценките по математика са равни на 100.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS = 100;
Изходът от горната заявка е:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | ОБЩО_МАРКИ |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | ВИНЕЕТ | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Показват се само записите на учениците, чиито математически оценки са равни на 100 от таблицата Stud и са общи както за Студентската, така и за таблицата Stud.
Пример 3: Изпълнете заявка за извършване на операция INTERSECT между таблицата на Студент и таблицата на Stud, но показвайте само онези записи на Студент от таблицата на Student, където оценките по химия са по-големи от 80.
SELECT * FROM STUDENT WHERE CHEMISTRY_MARKS > 80 INTERSECT SELECT * FROM STUD;
Изходът от горната заявка е:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | ОБЩО_МАРКИ |
6 | АНКИТА | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | ВИНЕЕТ | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | ВИШАЛ | 75 | 88 | 96 | 259 |
Показват се само записите на учениците, чиито оценки по химия са по-големи от 80 от таблицата на учениците и са общи както за студентската, така и за таблицата Stud.
Пример 4: Изпълнете заявка за извършване на операция INTERSECT между Студентска таблица и Студентска таблица и покажете само онези записи на Студент, при които оценките по физика са по-големи от 75 от таблицата на Студентите, и второ изберете заявки, които показват само онези записи на Студент, където оценките по математика са по-големи от 90 от Stud.
SELECT * FROM STUDENT WHERE PHYSICS_MARKS > 75 INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS > 90;
Изходът от горната заявка е:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | ОБЩО_МАРКИ |
6 | АНКИТА | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | ВИНЕЕТ | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Показват се само записите на учениците, чиито оценки по физика са по-големи от 75 от таблицата на учениците, а оценките по математика са по-големи от 90 от таблицата за ученици и са общи както за студента, така и за таблицата на Stud.