sql >> Databasteknik >  >> RDS >> Database

SET-operatorer i SQL

Operatören som används för att sammanfoga eller kombinera två frågor är ingen mindre än SET-operatorer. Operatörer som kategoriseras i SET-operatörer är följande:

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

Regler som ska följas för att använda SET Operator är följande:

  • Antalet kolumner och ordningen på kolumner måste vara samma.
  • Datatypen måste vara kompatibel.

Låt oss förstå var och en av SET-operatörerna med exempel.

Betrakta följande tabeller tillsammans med de givna posterna.

Tabell1:Anställda

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID ARBETA_TIMMAR 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 TESTER 4 9 F
3001 PRANOTI SHENDE 55500 PUNE JAVA 3 9 F
3002 ANUJA VAR 50500 JAIPUR FMW 2 9 F
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3 12 M
4001 RAJESH GOUD 60500 MUMBAI TESTER 4 10 M

Tabell2:Anställd.

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID ARBETA_TIMMAR 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 TESTER 4 9 M
3001 Deepam Jauhari 55500 PUNE JAVA 3 9 M
3002 ANUJA VAR 50500 JAIPUR FMW 2 9 F
3003 Pranoti Shende 58500 MUMBAI JAVA 3 12 F
4001 RAJESH GOUD 60500 MUMBAI TESTER 4 10 M

Tabell3:Manager.

Managerid manager_name manager_department
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra TESTER

Tabell4:Manager1.

Managerid manager_name manager_department
1 Ishita Agrawal ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Paul Oakip TESTER

UNION-operatör

UNION Operator är den första operatören som används för att slå samman eller kombinera de två eller flera SELECT-satserna. Om och bara om antalet kolumner och kolumnernas ordning är samma.

De dubblerade raderna kommer inte att beaktas i resultatet som erhålls efter att UNION-operationen har utförts.

Syntaxen för UNION-operationen är följande,

SELECT * FROM TABLE_NAME1 UNION SELECT * FROM TABLE_NAME2;

Exempel 1: Kör en fråga för att utföra UNION-operation mellan Employees-tabellen och Employee-tabellen.

SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE;

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar data från anställda och den andra SELECT-frågan hämtar data från anställdas data, och UNION-operation utförs på båda SELECT-frågorna.

UNION-operationen tar bort dubbletter av rader mellan båda tabellerna. Följande utdata visas som:

Båda tabellposterna visas förutom dubblettposter.

Exempel 2: Kör en fråga för att utföra UNION-operation mellan Employees-tabellen och Employee-tabellen. Men visa endast de anställdas poster från anställdas tabell som tillhör staden Mumbai och från personaltabellen endast de anställdas poster vars anställdas lön är större än 50 000 och mindre än 60 000.

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

I ovanstående fråga har vi använt två SELECT-frågor. First SELECT-frågan hämtar endast de poster vars anställd tillhör Mumbai city från tabellen Anställda. Och utför UNION-operationen med den andra SELECT-frågan hämtar endast de poster vars anställdas lön är större än 50 000 men mindre än 60 000 från anställdstabellen. UNION-operationen tar bort dubbletter av rader mellan båda tabellerna.

Följande utdata visas som:

Båda tabellposterna visas förutom dubblettposter.

Exempel 3: Kör en fråga för att utföra UNION-operation mellan Employees-tabellen och Employee-tabellen. Vi vill bara ha de poster från tabellen Anställda vars anställdas stad tillhör "Pune" och "Jaipur".

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

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar de poster vars anställda tillhör staden 'Pune' och 'Jaipur' från tabellen Anställda. UNION-operationen utförs med posterna hämtade från den andra SELECT-frågan från den tabellanställde.

UNION-operationen tar bort dubbletter av rader mellan båda tabellerna. Följande utdata visas som:

Som vi alla kan se är resultatet av de första fem posterna de anställda som tillhör staden Pune eller Jaipur. Och viloposter är från anställdtabellen, den andra SELECT-frågan.

Båda tabellposterna visas förutom dubblettposter.

Exempel 4: Kör en fråga för att utföra UNION-operation mellan Employees-tabellen och Employee-tabellen. Vi vill bara ha de poster från tabellen Employee vars medarbetares förnamn börjar med V.

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

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar alla poster från tabellen Anställda. UNION-operationen utförs med posterna hämtade från den andra SELECT-frågan från tabellanställda vars förnamn börjar med 'V'.

UNION-operationen tar bort dubbletter av rader mellan båda tabellerna. Följande utdata visas som:

Som vi alla kan kommer de första 10 resultaten från tabellen Anställda, och resten är från tabellen Anställda vars anställds förnamn börjar med 'V'.

Exempel 5: Kör en fråga för att utföra UNION-operation mellan Manager-tabellen och Manager1-tabellen.

SELECT * FROM MANAGER UNION SELECT * FROM MANAGER1;

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar data från Managern och den andra SELECT-frågan hämtar data från manager1-data, och UNION-operationen utförs på båda SELECT-frågorna.

UNION-operationen tar bort dubbletter av rader mellan båda tabellerna. Följande utdata visas som:

Båda tabellposterna visas förutom dubblettposter.

UNION ALLA operatörer

UNION ALL-operatorn kombinerar all data från båda frågorna. I UNION-operatorn beaktades inte dubbletter av poster i resultatet, men UNION ALL ansåg dubbletter av poster i resultatet som erhölls efter att UNION ALL-operationen utförts.

Syntaxen för UNION ALL-operationen är följande,

SELECT * FROM TABLE_NAME1 UNION ALL SELECT * FROM TABLE_NAME2;

Exempel 1: Kör en fråga för att utföra UNION ALL-operationen mellan Employees-tabellen och Employee-tabellen.

SELECT * FROM EMPLOYEES UNION ALL SELECT * FROM EMPLOYEE;

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar data från anställda och utför UNION ALL-operationen med data som hämtas av den andra SELECT-frågan hämtar data från anställdtabellen.

Följande utdata visas som:

Alla poster kommer att visas från både tabellerna Anställda och Anställda, dubbletter av poster visas också när vi utför UNION ALL operation.

Exempel 2: Kör en fråga för att utföra UNION ALL-operationen mellan Employees-tabellen och Employee-tabellen. Men visa bara de anställdas register från anställdas tabell som tillhör staden Mumbai. Från personaltabellen, endast de anställdas poster vars anställdas lön är 60500 och staden är "Mumbai".

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

I ovanstående fråga har vi använt två SELECT-frågor. First SELECT-frågan hämtar endast de poster vars anställd tillhör Mumbai city från tabellen Anställda. Och utför UNION ALL-operationen med den andra SELECT-frågan hämtar endast de poster vars anställdas lön är 60500 och staden är 'Mumbai' från personaltabellen.

Följande utdata visas som:

Båda tabellposterna visas, inklusive dubbletter av poster när vi utför UNION ALL-operationer.

Exempel 3: Kör en fråga för att utföra UNION-operation mellan Employees-tabellen och Employee-tabellen. Vi vill bara ha de poster från tabellen Anställda vars anställdas stad tillhör "Pune", "Mumbai" och "Jaipur".

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

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar de poster vars anställda tillhör staden 'Pune', 'Mumbai' och 'Jaipur' från tabellen Anställda. UNION ALL-operationen utförs med posterna hämtade från den andra SELECT-frågan från den tabellanställde.

Följande utdata visas som:

Båda tabellposterna visas, inklusive dubbletter av poster när vi utför UNION ALL-operationer.

Exempel 4: Kör en fråga för att utföra UNION ALL-operationen mellan Manager-tabellen och Manager1-tabellen.

SELECT * FROM MANAGER UNION ALL SELECT * FROM MANAGER1;

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar data från Manager och utför UNION ALL-operationer med data som hämtas av den andra SELECT-frågan hämtar data från manager1-tabellen.

Följande utdata visas som:

Alla poster kommer att visas från både tabellerna Manager och Manager1; dubbletter av poster visas när vi utför UNION ALL-operationer.

INTERSECT-operatörer

Intersect-operatorn används för att kombinera två eller flera SELECT-satser, men den visar bara data som liknar SELECT-satsen.

Syntaxen för INTERSECT-operationen är följande,

SELECT * FROM TABLE_NAME1 INTERSECT SELECT * FROM TABLE_NAME2;

Exempel 1: Kör en fråga för att utföra INTERSECT-operationen mellan Employees-tabellen och Employee-tabellen.

SELECT * FROM EMPLOYEES INTERSECT SELECT * FROM EMPLOYEE;

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar data från anställda och utför INTERSECT-operation med data som hämtas av den andra SELECT-frågan hämtar data från anställdtabellen.

Följande utdata visas som:

Endast liknande poster kommer att visas från båda tabellerna, eftersom vi utförde INTERSECT-operationen mellan Employees-tabellen och Employee-tabellen.

Exempel 2: Kör en fråga för att utföra INTERSECT-operationen mellan Manager-tabellen och Manager1-tabellen.

SELECT * FROM MANAGER INTERSECT SELECT * FROM MANAGER1;

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar data från Manager och utför INTERSECT-operation med data som hämtas av den andra SELECT-frågan hämtar data från Manager1-tabellen.

Följande utdata visas som:

Endast liknande poster kommer att visas från båda tabellerna, eftersom vi utförde INTERSECT-operationen mellan Manager-tabellen och Manager1-tabellen.

MINUS Operatörer

MINUS-operatorn används för att returnera raderna som finns i den första frågan men saknas i resten av frågorna utan dubbletter.

Syntaxen för MINUS-operationen är som följer.

SELECT * FROM TABLE_NAME1 EXCEPT SELECT * FROM TABLE_NAME2;

Obs! MINUS-nyckelord stöds endast i ORACLE-databaser. Vi kan använda EXCEPT nyckelord för andra databaser för att utföra en liknande operation.

Exempel 1: Kör en fråga för att utföra MINUS-operation mellan Employees-tabellen och Employee-tabellen.

SELECT * FROM EMPLOYEES EXCEPT SELECT * FROM EMPLOYEE;

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar data från anställda och utför MINUS-operation med data som hämtas av den andra SELECT-frågan hämtar data från medarbetartabellen.

Följande utdata visas som:

Endast omatchade poster kommer att visas från båda tabellerna, eftersom vi utförde MINUS-operation mellan Employees-tabellen och Employee-tabellen.

Exempel 2: Kör en fråga för att utföra MINUS-operation mellan Manager-tabellen och Manager1-tabellen.

SELECT * FROM MANAGER EXCEPT SELECT * FROM MANAGER1;

I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar data från Manager och utför MINUS-operation med data som hämtas av den andra SELECT-frågan hämtar data från Manager1-tabellen.

Följande utdata visas som:

Endast omatchade poster kommer att visas från båda tabellerna, eftersom vi utförde MINUS-operation mellan Manager-tabellen och Manager1-tabellen.


  1. Hur man lägger till 10 sekunder i current_timestamp SQL (Oracle)

  2. Hur får man en ålder från ett D.O.B-fält i MySQL?

  3. Funktionsbaserade index i SQL Server

  4. Få tabell och kolumn som äger en sekvens