sql >> Database teknologi >  >> RDS >> Database

SET operatører i SQL

Operatøren, der bruges til at forbinde eller kombinere to forespørgsler, er ingen ringere end SET-operatører. Operatører kategoriseret i SET-operatører er som følger:

  1. UNION-operatør.
  2. UNION ALL’ Operatør.
  3. INTERSECT Operator.
  4. MINUS Operatør.

Regler, der skal følges for at bruge SET Operator, er som følger:

  • Antallet af kolonner og rækkefølgen af ​​kolonner skal være det samme.
  • Datatypen skal være kompatibel.

Lad os forstå hver af SET-operatørerne med eksempler.

Overvej følgende tabeller sammen med de givne poster.

Tabel1:Medarbejdere

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING MANAGERID WORKING_HOURS KØN
1001 VAIBHAVI MISHRA 65.000 PUNE ORACLE 1 12 F
1002 VAIBHAV SHARMA 60.000 NOIDA ORACLE 1 9 M
1003 NIKHIL VANI 50.000 JAIPUR FMW 2 10 M
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1 10 F
2002 BHAVESH JAIN 65500 PUNE FMW 2 12 M
2003 RUCHIKA JAIN 50.000 MUMBAI TEST 4 9 F
3001 PRANOTI SHENDE 55500 PUNE JAVA 3 9 F
3002 ANUJA HVOR 50500 JAIPUR FMW 2 9 F
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3 12 M
4001 RAJESH GOUD 60500 MUMBAI TEST 4 10 M

Tabel 2:Medarbejder.

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING MANAGERID WORKING_HOURS KØN
1001 Vaibhav Sharma 65.000 PUNE ORACLE 1 12 M
1002 Nikhil Vani 60.000 NOIDA ORACLE 1 9 M
1003 Vaibhavi Mishra 50.000 JAIPUR FMW 2 10 F
2001 Ruchika Jain 55500 CHANDIGARH ORACLE 1 10 F
2002 Prachi Sharma 65500 PUNE FMW 2 12 F
2003 Bhavesh Jain 50.000 MUMBAI TEST 4 9 M
3001 Deepam Jauhari 55500 PUNE JAVA 3 9 M
3002 ANUJA HVOR 50500 JAIPUR FMW 2 9 F
3003 Pranoti Shende 58500 MUMBAI JAVA 3 12 F
4001 RAJESH GOUD 60500 MUMBAI TEST 4 10 M

Tabel3:Manager.

Managerid manager_navn manager_afdeling
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra TEST

Tabel 4:Manager1.

Managerid manager_navn manager_afdeling
1 Ishita Agrawal ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Paul Oakip TEST

UNION-operatør

UNION Operator er den første Operator, der bruges til at flette eller kombinere de to eller flere SELECT-sætninger. Hvis og kun hvis antallet af kolonner og rækkefølgen af ​​kolonner er ens.

De duplikerede rækker vil ikke blive taget i betragtning i resultatet opnået efter UNION-operationen er udført.

Syntaksen for UNION-operation er som følger,

SELECT * FROM TABLE_NAME1 UNION SELECT * FROM TABLE_NAME2;

Eksempel 1: Udfør en forespørgsel for at udføre UNION-handling mellem medarbejdertabel og medarbejdertabel.

SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE;

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter dataene fra medarbejdere, og den anden SELECT-forespørgsel henter dataene fra medarbejderdata, og UNION-operationen udføres på begge SELECT-forespørgslerne.

UNION-operationen vil kassere dubletter af rækker mellem begge tabeller. Følgende output vises som:

Begge tabelposter vises undtagen duplikerede poster.

Eksempel 2: Udfør en forespørgsel for at udføre UNION-handling mellem medarbejdertabel og medarbejdertabel. Men vis kun de ansattes optegnelser fra medarbejdertabellen, der tilhører byen Mumbai, og fra medarbejdertabellen kun de medarbejderes poster, hvis medarbejderløn er større end 50.000 og mindre end 60.000.

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

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter kun de poster, hvis medarbejder tilhører Mumbai by, fra tabellen Medarbejdere. Og udfør UNION-operation med den anden SELECT-forespørgsel henter kun de poster, hvis medarbejderløn er større end 50.000, men mindre end 60.000, fra medarbejdertabellen. UNION-operationen vil kassere dubletter af rækker mellem begge tabeller.

Følgende output vises som:

Begge tabelposter vises undtagen duplikerede poster.

Eksempel 3: Udfør en forespørgsel for at udføre UNION-handling mellem medarbejdertabel og medarbejdertabel. Vi vil kun have de poster fra tabellen Medarbejdere, hvis medarbejderby tilhører 'Pune' og 'Jaipur'.

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

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter de poster, hvis medarbejdere tilhører byen 'Pune' og 'Jaipur' fra tabellen Medarbejdere. UNION-operationen udføres med posterne hentet fra den anden SELECT-forespørgsel fra tabelmedarbejderen.

UNION-operationen vil kassere dubletter af rækker mellem begge tabeller. Følgende output vises som:

Som vi alle kan se, er resultatet af de første fem poster de ansatte, der tilhører Pune eller Jaipur by. Og hvileposter er fra medarbejdertabellen, den anden SELECT-forespørgsel.

Begge tabelposter vises undtagen duplikerede poster.

Eksempel 4: Udfør en forespørgsel for at udføre UNION-handling mellem medarbejdertabel og medarbejdertabel. Vi ønsker kun de poster fra tabellen Medarbejder, hvis medarbejder fornavnet starter med V.

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

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter alle posterne fra tabellen Medarbejdere. UNION-operationen udføres med posterne hentet fra den anden SELECT-forespørgsel fra tabelmedarbejderen, hvis fornavn starter med 'V'.

UNION-operationen vil kassere dubletter af rækker mellem begge tabeller. Følgende output vises som:

Som vi alle kan, er de første 10 resultater fra tabellen Medarbejdere, og resten er fra tabellen Medarbejdere, hvis medarbejders fornavn starter med 'V'.

Eksempel 5: Udfør en forespørgsel for at udføre UNION-handling mellem Manager-tabel og Manager1-tabel.

SELECT * FROM MANAGER UNION SELECT * FROM MANAGER1;

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter dataene fra administratoren, og den anden SELECT-forespørgsel henter dataene fra administrator1-data, og UNION-operationen udføres på begge SELECT-forespørgslerne.

UNION-operationen vil kassere dubletter af rækker mellem begge tabeller. Følgende output vises som:

Begge tabelposter vises undtagen duplikerede poster.

UNION ALLE operatører

UNION ALL operatør kombinerer alle data fra begge forespørgsler. I UNION-operatoren blev dubletter af poster ikke taget i betragtning i resultatet, men UNION ALL betragtede duplikerede poster i resultatet opnået efter at UNION ALL-operationen er udført.

Syntaksen for UNION ALL-operationen er som følger,

SELECT * FROM TABLE_NAME1 UNION ALL SELECT * FROM TABLE_NAME2;

Eksempel 1: Udfør en forespørgsel for at udføre UNION ALL-handlingen mellem medarbejdertabel og medarbejdertabel.

SELECT * FROM EMPLOYEES UNION ALL SELECT * FROM EMPLOYEE;

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter dataene fra medarbejderne og udfører UNION ALL-operationen med de data, der hentes af den anden SELECT-forespørgsel, og henter dataene fra medarbejdertabellen.

Følgende output vises som:

Alle posterne vil blive vist fra både tabellerne Medarbejdere og Medarbejdere, duplikerede poster bliver også vist, når vi udfører UNION ALL-operationen.

Eksempel 2: Udfør en forespørgsel for at udføre UNION ALL-operationen mellem medarbejdertabel og medarbejdertabel. Men vis kun de ansattes poster fra medarbejdertabellen, der tilhører byen Mumbai. Fra medarbejdertabellen er det kun de ansattes poster, hvis medarbejderløn er 60.500 og byen er 'Mumbai'.

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

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter kun de poster, hvis medarbejder tilhører Mumbai by, fra tabellen Medarbejdere. Og udfør UNION ALL-operationen med den anden SELECT-forespørgsel henter kun de poster, hvis medarbejderløn er 60500, og byen er 'Mumbai' fra medarbejdertabellen.

Følgende output vises som:

Begge tabelposter vises, inklusive duplikerede poster, når vi udfører UNION ALL-operationer.

Eksempel 3: Udfør en forespørgsel for at udføre UNION-handling mellem medarbejdertabel og medarbejdertabel. Vi vil kun have de poster fra tabellen Medarbejdere, hvis medarbejderby tilhører 'Pune', 'Mumbai' og 'Jaipur'.

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

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter de poster, hvis medarbejdere tilhører byen 'Pune', 'Mumbai' og 'Jaipur' fra tabellen Medarbejdere. UNION ALL-operationen udføres med posterne hentet fra den anden SELECT-forespørgsel fra tabelmedarbejderen.

Følgende output vises som:

Begge tabelposter vises, inklusive duplikerede poster, når vi udfører UNION ALL-operationer.

Eksempel 4: Udfør en forespørgsel for at udføre UNION ALL-handlingen mellem Manager-tabel og Manager1-tabel.

SELECT * FROM MANAGER UNION ALL SELECT * FROM MANAGER1;

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter dataene fra Manager og udfører UNION ALL-operationer med de data, der hentes af den anden SELECT-forespørgsel, henter dataene fra manager1-tabellen.

Følgende output vises som:

Alle poster vil blive vist fra både tabellerne Manager og Manager1; duplikerede poster vises, mens vi udfører UNION ALL-operationer.

KNYTTER operatører

Intersect-operator bruges til at kombinere to eller flere SELECT-sætninger, men den viser kun data, der ligner SELECT-sætningen.

Syntaksen for INTERSECT-operationen er som følger,

SELECT * FROM TABLE_NAME1 INTERSECT SELECT * FROM TABLE_NAME2;

Eksempel 1: Udfør en forespørgsel for at udføre INTERSECT-operation mellem medarbejdertabel og medarbejdertabel.

SELECT * FROM EMPLOYEES INTERSECT SELECT * FROM EMPLOYEE;

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter dataene fra medarbejderne og udfører INTERSECT-operationen med de data, der hentes af den anden SELECT-forespørgsel, henter dataene fra medarbejdertabellen.

Følgende output vises som:

Kun lignende poster vil blive vist fra begge tabeller, da vi udførte INTERSECT-operationen mellem medarbejdertabel og medarbejdertabel.

Eksempel 2: Udfør en forespørgsel for at udføre INTERSECT-operation mellem Manager-tabel og Manager1-tabel.

SELECT * FROM MANAGER INTERSECT SELECT * FROM MANAGER1;

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter dataene fra Manager og udfører INTERSECT-operationen med de data, der hentes af den anden SELECT-forespørgsel, henter dataene fra Manager1-tabellen.

Følgende output vises som:

Kun lignende poster vil blive vist fra begge tabeller, da vi udførte INTERSECT-operationen mellem Manager-tabel og Manager1-tabel.

MINUS operatører

MINUS-operatoren bruges til at returnere rækkerne til stede i den første forespørgsel, men fraværende i resten af ​​forespørgslerne uden dubletter.

Syntaksen for MINUS-operation er som følger.

SELECT * FROM TABLE_NAME1 EXCEPT SELECT * FROM TABLE_NAME2;

Bemærk: MINUS nøgleord er kun understøttet i ORACLE databaser. Vi kan bruge EXCEPT nøgleord til andre databaser til at udføre en lignende handling.

Eksempel 1: Udfør en forespørgsel for at udføre MINUS-handling mellem Medarbejdertabel og Medarbejdertabel.

SELECT * FROM EMPLOYEES EXCEPT SELECT * FROM EMPLOYEE;

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter dataene fra medarbejderne og udfører MINUS-operation med dataene, der hentes af den anden SELECT-forespørgsel, henter dataene fra medarbejdertabellen.

Følgende output vises som:

Kun umatchede poster vil blive vist fra begge tabeller, da vi udførte MINUS-operation mellem medarbejdertabel og medarbejdertabel.

Eksempel 2: Udfør en forespørgsel for at udføre MINUS-handling mellem Manager-tabel og Manager1-tabel.

SELECT * FROM MANAGER EXCEPT SELECT * FROM MANAGER1;

I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter dataene fra Manager og udfører MINUS-operation med dataene hentet af den anden SELECT-forespørgsel henter dataene fra Manager1-tabellen.

Følgende output vises som:

Kun umatchede poster vil blive vist fra begge tabeller, da vi udførte MINUS-operation mellem Manager-tabel og Manager1-tabel.


  1. udskriv start- og slutdato i én række for kontinuerlige eller overlappende datointervaller i oracle SQL

  2. Sådan klones R12.2-miljøet

  3. Brug af Jenkins med Kubernetes AWS, del 1

  4. Ret "SQL-server blokerede adgang til ERKLÆRING 'OpenRowset/OpenDatasource' for komponenten 'Ad Hoc Distributed Queries'