Database
 sql >> база данни >  >> RDS >> Database

SET оператори в SQL

Операторът, използван за свързване или комбиниране на две заявки, не е нищо друго освен оператори SET. Операторите, категоризирани в оператори SET, са както следва:

  1. Оператор UNION.
  2. Оператор UNION ALL’.
  3. Оператор INTERSECT.
  4. МИНУС оператор.

Правилата, които трябва да се спазват, за да работите с SET оператор, са следните:

  • Броят на колоните и редът на колоните трябва да са еднакви.
  • Типът данни трябва да е съвместим.

Нека разберем всеки от операторите SET с примери.

Разгледайте следните таблици заедно с дадените записи.

Таблица 1:Служители

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID WORKING_HOURS POL
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1 12 F
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1 9 М
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2 10 М
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1 10 F
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2 12 М
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4 9 F
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3 9 F
3002 ANUJA КЪДЕ 50500 ДЖАЙПУР FMW 2 9 F
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3 12 М
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4 10 М

Таблица 2:Служител.

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID WORKING_HOURS POL
1001 Вайбхав Шарма 65 000 ПУНА ORACLE 1 12 М
1002 Нихил Вани 60 000 NOIDA ORACLE 1 9 М
1003 Вайбхави Мишра 50 000 ДЖАЙПУР FMW 2 10 F
2001 Ручика Джайн 55500 ЧАНДИГАР ORACLE 1 10 F
2002 Прачи Шарма 65500 ПУНА FMW 2 12 F
2003 Бхавеш Джайн 50 000 МУМБАЙ ТЕСТВАНЕ 4 9 М
3001 Дийпам Джаухари 55500 ПУНА JAVA 3 9 М
3002 ANUJA КЪДЕ 50500 ДЖАЙПУР FMW 2 9 F
3003 Праноти Шенде 58500 МУМБАЙ JAVA 3 12 F
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4 10 М

Таблица3:Мениджър.

Managerid име_на_мениджър мениджърски отдел
1 Снехдип Каур ORACLE
2 Кирти Киртане FMW
3 Абхишек Маниш JAVA
4 Анупам Мишра ТЕСТВАНЕ

Таблица 4:Мениджър1.

Managerid име_на_мениджър мениджърски отдел
1 Ишита Агравал ORACLE
2 Кирти Киртане FMW
3 Абхишек Маниш JAVA
4 Пол Оукип ТЕСТВАНЕ

Оператор UNION

UNION операторът е първият оператор, използван за сливане или комбиниране на два или повече оператора SELECT. Ако и само ако броят им на колоните и редът на колоните са еднакви.

Дублираните редове няма да бъдат взети предвид в резултата, получен след изпълнение на операцията UNION.

Синтаксисът за операция UNION е както следва,

SELECT * FROM TABLE_NAME1 UNION SELECT * FROM TABLE_NAME2;

Пример 1: Изпълнете заявка за изпълнение на операция UNION между таблицата Employees и Employee table.

SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE;

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича данните от служителите, а втората заявка SELECT извлича данните от данните за служителите, а операцията UNION се изпълнява и за двете заявки SELECT.

Операцията UNION ще отхвърли дублиращи се редове между двете таблици. Следният изход се показва като:

Показват се и двата записа в таблицата с изключение на дублиращи се записи.

Пример 2: Изпълнете заявка за изпълнение на операция UNION между таблица Employees и Employee таблица. Но показвайте само записите на служителите от таблицата на служителите, които принадлежат на град Мумбай, а от таблицата на служителите само записите на служителите, чиято заплата на служителите е по-голяма от 50 000 и по-малка от 60 000.

SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION SELECT * FROM EMPLOYEE WHERE SALARY > 50000 AND SALARY < 60000;

В горната заявка използвахме две заявки SELECT. Заявката First SELECT извлича само онези записи, чийто служител принадлежи към град Мумбай от таблицата Employees. И изпълнете операция UNION с втората заявка SELECT, извлича само онези записи, чиято заплата на служителите е по-голяма от 50000, но по-малка от 60000 от таблицата на служителите. Операцията UNION ще отхвърли дублиращи се редове между двете таблици.

Следният изход се показва като:

Показват се и двата записа в таблицата с изключение на дублиращи се записи.

Пример 3: Изпълнете заявка за изпълнение на операция UNION между таблица Employees и Employee таблица. Искаме само онези записи от таблицата на служителите, чийто град на служителите принадлежи на „Пуна“ и „Джайпур“.

SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'JAIPUR') UNION SELECT * FROM EMPLOYEE;

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича онези записи, чиито служители принадлежат към град „Пуна“ и „Джайпур“ от таблицата „Служители“. Операцията UNION се изпълнява със записите, извлечени от втората заявка SELECT от служителя на таблицата.

Операцията UNION ще отхвърли дублиращи се редове между двете таблици. Следният изход се показва като:

Както всички можем да видим, резултатите от първите пет записа са тези служители, които принадлежат към град Пуна или Джайпур. А останалите записи са от таблицата на служителите, втората заявка SELECT.

Показват се и двата записа в таблицата с изключение на дублиращи се записи.

Пример 4: Изпълнете заявка за изпълнение на операция UNION между таблица Employees и Employee таблица. Искаме само онези записи от таблицата на служителите, чийто служител започва с V.

SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE WHERE FIRST_NAME LIKE 'V%';

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича всички записи от таблицата Employees. Операцията UNION се изпълнява със записите, извлечени от втората заявка SELECT от служителя на таблицата, чието име започва с „V“.

Операцията UNION ще отхвърли дублиращи се редове между двете таблици. Следният изход се показва като:

Както всички можем, първите 10 резултата са от таблицата „Служители“, а останалите са от таблицата „Служители“, чийто служител започва с „V“.

Пример 5: Изпълнете заявка за изпълнение на операция UNION между таблицата на мениджър и таблицата на мениджър1.

SELECT * FROM MANAGER UNION SELECT * FROM MANAGER1;

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича данните от мениджъра, а втората заявка SELECT извлича данните от данни на мениджър1, а операцията UNION се изпълнява и за двете заявки SELECT.

Операцията UNION ще отхвърли дублиращи се редове между двете таблици. Следният изход се показва като:

Показват се и двата записа в таблицата с изключение на дублиращи се записи.

ОБЪЕДИНЕНИЕ НА ВСИЧКИ оператори

Оператор UNION ALL комбинира всички данни от двете заявки. В оператора UNION дублиращите се записи не бяха взети предвид в резултата, но UNION ALL считаше дублиращи се записи в резултата, получен след извършване на операцията UNION ALL.

Синтаксисът за операция UNION ALL е както следва,

SELECT * FROM TABLE_NAME1 UNION ALL SELECT * FROM TABLE_NAME2;

Пример 1: Изпълнете заявка за извършване на операция UNION ALL между таблицата Employees и Employee table.

SELECT * FROM EMPLOYEES UNION ALL SELECT * FROM EMPLOYEE;

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича данните от служителите и изпълнява операция UNION ALL с данните, извлечени от втората заявка SELECT, извлича данните от таблицата на служителите.

Следният изход се показва като:

Всички записи ще се показват и от двете таблици „Служители“ и „Служител“, дублираните записи също се показват, докато изпълняваме операция UNION ALL.

Пример 2: Изпълнете заявка за изпълнение на операция UNION ALL между таблица Employees и Employee таблица. Но показвайте само записите на служителите от таблицата на служителите, които принадлежат на град Мумбай. От таблицата на служителите се виждат само регистрите на служителите, чиято заплата на служителите е 60 500, а градът е „Мумбай“.

SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION ALL SELECT * FROM EMPLOYEE WHERE SALARY = 60500 AND CITY = 'MUMBAI';

В горната заявка използвахме две заявки SELECT. Заявката First SELECT извлича само онези записи, чийто служител принадлежи към град Мумбай от таблицата Employees. И изпълнете операция UNION ALL с втората заявка SELECT, извлича само онези записи, чиято заплата на служителите е 60 500 и градът е „Мумбай“ от таблицата на служителите.

Следният изход се показва като:

Показват се и двата записа в таблицата, включително дублиращи се записи, докато изпълняваме операции UNION ALL.

Пример 3: Изпълнете заявка за изпълнение на операция UNION между таблица Employees и Employee таблица. Искаме само онези записи от таблицата „Служители“, чийто град на служителите принадлежи на „Пуна“, „Мумбай“ и „Джайпур“.

SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'MUMBAI', 'JAIPUR') UNION ALL SELECT * FROM EMPLOYEE;

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича онези записи, чиито служители принадлежат към град „Пуна“, „Мумбай“ и „Джайпур“ от таблицата „Служители“. Операцията UNION ALL се изпълнява със записите, извлечени от втората заявка SELECT от служителя на таблицата.

Следният изход се показва като:

Показват се и двата записа в таблицата, включително дублиращи се записи, докато изпълняваме операции UNION ALL.

Пример 4: Изпълнете заявка за изпълнение на операция UNION ALL между таблицата на мениджър и таблицата на мениджър1.

SELECT * FROM MANAGER UNION ALL SELECT * FROM MANAGER1;

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича данните от мениджъра и изпълнява операции UNION ALL с данните, извлечени от втората заявка SELECT, извлича данните от таблицата manager1.

Следният изход се показва като:

Всички записи ще бъдат показани и от двете таблици Manager и Manager1; дублиращи се записи се показват, докато изпълняваме операции UNION ALL.

Оператори INTERSECT

Операторът Intersect се използва за комбиниране на два или повече оператора SELECT, но показва само данните, подобни на оператора SELECT.

Синтаксисът за операция INTERSECT е както следва,

SELECT * FROM TABLE_NAME1 INTERSECT SELECT * FROM TABLE_NAME2;

Пример 1: Изпълнете заявка за извършване на операция INTERSECT между таблицата Employees и Employee table.

SELECT * FROM EMPLOYEES INTERSECT SELECT * FROM EMPLOYEE;

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича данните от служителите и извършва операция INTERSECT с данните, извлечени от втората заявка SELECT, извлича данните от таблицата на служителите.

Следният изход се показва като:

Само подобни записи ще се показват и от двете таблици, тъй като извършихме операция INTERSECT между таблицата Employees и Employee table.

Пример 2: Изпълнете заявка за извършване на операция INTERSECT между таблицата Manager и таблицата Manager1.

SELECT * FROM MANAGER INTERSECT SELECT * FROM MANAGER1;

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича данните от Manager и изпълнява операция INTERSECT с данните, извлечени от втората заявка SELECT, извлича данните от таблицата Manager1.

Следният изход се показва като:

Само подобни записи ще се показват и от двете таблици, тъй като извършихме операция INTERSECT между таблицата на мениджър и таблицата на мениджър1.

МИНУС оператори

Операторът MINUS се използва за връщане на редовете, присъстващи в първата заявка, но отсъстващи в останалите заявки без дубликати.

Синтаксисът за операция MINUS е както следва.

SELECT * FROM TABLE_NAME1 EXCEPT SELECT * FROM TABLE_NAME2;

Забележка: Ключовата дума MINUS се поддържа само в бази данни ORACLE. Можем да използваме ключова дума EXCEPT за други бази данни, за да извършим подобна операция.

Пример 1: Изпълнете заявка за извършване на операция MINUS между таблицата Employees и Employee table.

SELECT * FROM EMPLOYEES EXCEPT SELECT * FROM EMPLOYEE;

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича данните от служителите и извършва операция MINUS с данните, извлечени от втората заявка SELECT, извлича данните от таблицата на служителите.

Следният изход се показва като:

Само несъвпадащи записи ще се показват и от двете таблици, тъй като извършихме операция МИНУС между таблицата Employees и Employee table.

Пример 2: Изпълнете заявка за извършване на операция MINUS между таблицата Manager и таблицата Manager1.

SELECT * FROM MANAGER EXCEPT SELECT * FROM MANAGER1;

В горната заявка използвахме две заявки SELECT. Първата заявка SELECT извлича данните от Manager и извършва операция MINUS с данните, извлечени от втората заявка SELECT, извлича данните от таблицата Manager1.

Следният изход се показва като:

Само несъвпадащи записи ще се показват и от двете таблици, тъй като извършихме операция МИНУС между таблицата на мениджър и таблицата на мениджър 1.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разрешим грешката `prisma/client все още не е инициализиран` ​​на Vercel

  2. Пространството за таблици SYSMMGMTDATA е ПЪЛНО в хранилището за управление на грид инфраструктурата (MGMTDB)

  3. Брой прочетени редове / действителни предупреждения за четене на редове в Plan Explorer

  4. T-SQL вторник #64:Един тригер или много?

  5. Основи на табличните изрази, част 9 – Изгледи, сравнени с производни таблици и CTE