De operator die wordt gebruikt om twee query's samen te voegen of te combineren, is niemand minder dan SET-operators. Operators die zijn onderverdeeld in SET-operators zijn als volgt:
- UNION-operator.
- UNION ALL'-operator.
- INTERSECT-operator.
- MINUS-operator.
Regels die moeten worden gevolgd om te werken met behulp van SET Operator zijn als volgt:
- Het aantal kolommen en de volgorde van kolommen moet hetzelfde zijn.
- Gegevenstype moet compatibel zijn.
Laten we elk van de SET-operators begrijpen met voorbeelden.
Bekijk de volgende tabellen samen met de gegeven records.
Tabel1:Werknemers
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID | WORKING_HOURS | GENDER |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORAKLE | 1 | 12 | F |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORAKLE | 1 | 9 | M |
1003 | NIKHIL | VANI | 50000 | JAIPUR | FMW | 2 | 10 | M |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 | 10 | F |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 | 12 | M |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | TESTEN | 4 | 9 | F |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 | 9 | F |
3002 | ANUJA | WAAR | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 | 12 | M |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTEN | 4 | 10 | M |
Tabel 2:Werknemer.
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID | WORKING_HOURS | GENDER |
1001 | Vaibhav | Sharma | 65000 | PUNE | ORAKLE | 1 | 12 | M |
1002 | Nikhil | Vani | 60000 | NOIDA | ORAKLE | 1 | 9 | M |
1003 | Vaibhavi | Mishra | 50000 | JAIPUR | FMW | 2 | 10 | F |
2001 | Ruchika | Jain | 55500 | CHANDIGARH | ORAKLE | 1 | 10 | F |
2002 | Prachi | Sharma | 65500 | PUNE | FMW | 2 | 12 | F |
2003 | Bhavesh | Jain | 50000 | MUMBAI | TESTEN | 4 | 9 | M |
3001 | Deepam | Jauhari | 55500 | PUNE | JAVA | 3 | 9 | M |
3002 | ANUJA | WAAR | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | Pranoti | Shende | 58500 | MUMBAI | JAVA | 3 | 12 | F |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTEN | 4 | 10 | M |
Tabel 3:Manager.
Managerid | manager_name | manager_department |
1 | Snehdeep Kaur | ORAKLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TESTEN |
Tabel4:Manager1.
Managerid | manager_name | manager_department |
1 | Ishita Agrawal | ORAKLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Paul Oakip | TESTEN |
UNION-operator
UNION-operator is de eerste operator die wordt gebruikt om de twee of meer SELECT-instructies samen te voegen of te combineren. Als en alleen als hun aantal kolommen en volgorde van kolommen hetzelfde zijn.
De gedupliceerde rijen worden niet in aanmerking genomen in het resultaat dat wordt verkregen nadat de UNION-bewerking is uitgevoerd.
De syntaxis voor de werking van UNION is als volgt,
SELECT * FROM TABLE_NAME1 UNION SELECT * FROM TABLE_NAME2;
Voorbeeld 1: Voer een query uit om de UNION-bewerking uit te voeren tussen de werknemerstabel en de werknemerstabel.
SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt de gegevens op van werknemers en de tweede SELECT-query haalt de gegevens op uit werknemersgegevens, en de UNION-bewerking wordt uitgevoerd op beide SELECT-query's.
UNION-bewerking verwijdert dubbele rijen tussen beide tabellen. De volgende uitvoer wordt weergegeven als:
Beide tabelrecords worden weergegeven, behalve dubbele records.
Voorbeeld 2: Voer een query uit om de UNION-bewerking uit te voeren tussen de tabel Werknemers en de tabel Werknemers. Maar geef alleen die werknemersrecords weer uit de werknemerstabel die bij de stad Mumbai hoort en uit de werknemerstabel alleen die werknemersrecords waarvan het werknemerssalaris hoger is dan 50000 en minder dan 60000.
SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION SELECT * FROM EMPLOYEE WHERE SALARY > 50000 AND SALARY < 60000;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt alleen die records op waarvan de werknemer bij de stad Mumbai hoort uit de tabel Werknemers. En als u de UNION-bewerking uitvoert met de tweede SELECT-query haalt u alleen die records op waarvan het werknemerssalaris hoger is dan 50000 maar lager dan 60000 uit de werknemerstabel. UNION-bewerking verwijdert dubbele rijen tussen beide tabellen.
De volgende uitvoer wordt weergegeven als:
Beide tabelrecords worden weergegeven, behalve dubbele records.
Voorbeeld 3: Voer een query uit om de UNION-bewerking uit te voeren tussen de tabel Werknemers en de tabel Werknemers. We willen alleen die records uit de tabel Werknemers waarvan de werknemersstad bij 'Pune' en 'Jaipur' hoort.
SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'JAIPUR') UNION SELECT * FROM EMPLOYEE;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt die records op waarvan de werknemers behoren tot de stad 'Pune' en 'Jaipur' uit de tabel Werknemers. De UNION-bewerking wordt uitgevoerd met de records die zijn opgehaald uit de tweede SELECT-query van de tafelmedewerker.
UNION-bewerking verwijdert dubbele rijen tussen beide tabellen. De volgende uitvoer wordt weergegeven als:
Zoals we allemaal kunnen zien, zijn het resultaat van de eerste vijf records die werknemers die tot de stad Pune of Jaipur behoren. En rustrecords komen uit de werknemerstabel, de tweede SELECT-query.
Beide tabelrecords worden weergegeven, behalve dubbele records.
Voorbeeld 4: Voer een query uit om de UNION-bewerking uit te voeren tussen de tabel Werknemers en de tabel Werknemers. We willen alleen die records uit de tabel Medewerker waarvan de voornaam van de werknemer begint met V.
SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE WHERE FIRST_NAME LIKE 'V%';
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt alle records op uit de tabel Werknemers. De UNION-bewerking wordt uitgevoerd met de records die zijn opgehaald uit de tweede SELECT-query van de tabelmedewerker wiens voornaam begint met 'V'.
UNION-bewerking verwijdert dubbele rijen tussen beide tabellen. De volgende uitvoer wordt weergegeven als:
Zoals we allemaal kunnen, komen eerst 10 resultaten uit de tabel Medewerkers en de rest komt uit de tabel Medewerkers waarvan de voornaam van de medewerker begint met 'V'.
Voorbeeld 5: Voer een query uit om de UNION-bewerking uit te voeren tussen Manager-tabel en Manager1-tabel.
SELECT * FROM MANAGER UNION SELECT * FROM MANAGER1;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt de gegevens op uit de Manager en de tweede SELECT-query haalt de gegevens op uit de manager1-gegevens, en de UNION-bewerking wordt uitgevoerd op beide SELECT-query's.
UNION-bewerking verwijdert dubbele rijen tussen beide tabellen. De volgende uitvoer wordt weergegeven als:
Beide tabelrecords worden weergegeven, behalve dubbele records.
UNION ALL Operators
UNION ALL-operator combineert alle gegevens van beide query's. In de UNION-operator werd geen rekening gehouden met dubbele records in het resultaat, maar UNION ALL hield rekening met dubbele records in het resultaat dat werd verkregen nadat de bewerking UNION ALL was uitgevoerd.
De syntaxis voor de bewerking UNION ALL is als volgt,
SELECT * FROM TABLE_NAME1 UNION ALL SELECT * FROM TABLE_NAME2;
Voorbeeld 1: Voer een query uit om de UNION ALL-bewerking uit te voeren tussen de werknemerstabel en de werknemerstabel.
SELECT * FROM EMPLOYEES UNION ALL SELECT * FROM EMPLOYEE;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt de gegevens op van werknemers en voert de UNION ALL-bewerking uit met de gegevens die worden opgehaald door de tweede SELECT-query om de gegevens op te halen uit de werknemerstabel.
De volgende uitvoer wordt weergegeven als:
Alle records worden weergegeven vanuit zowel de tabellen Werknemers als Werknemers, dubbele records worden ook weergegeven als we de UNION ALL-bewerking uitvoeren.
Voorbeeld 2: Voer een query uit om de bewerking UNION ALL uit te voeren tussen de tabel Werknemers en de tabel Werknemers. Maar toon alleen die werknemersrecords uit de werknemerstabel die bij de stad Mumbai horen. Van de werknemerstabel, alleen die werknemersrecords waarvan het werknemerssalaris 60500 is en de stad 'Mumbai' is.
SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION ALL SELECT * FROM EMPLOYEE WHERE SALARY = 60500 AND CITY = 'MUMBAI';
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt alleen die records op waarvan de werknemer bij de stad Mumbai hoort uit de tabel Werknemers. En als u de UNION ALL-bewerking uitvoert met de tweede SELECT-query haalt u alleen die records op waarvan het werknemerssalaris 60500 is en de stad 'Mumbai' uit de werknemerstabel.
De volgende uitvoer wordt weergegeven als:
Beide tabelrecords worden weergegeven, inclusief dubbele records als we UNION ALL-bewerkingen uitvoeren.
Voorbeeld 3: Voer een query uit om de UNION-bewerking uit te voeren tussen de tabel Werknemers en de tabel Werknemers. We willen alleen die records uit de tabel Werknemers waarvan de werknemersstad bij 'Pune', 'Mumbai' en 'Jaipur' hoort.
SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'MUMBAI', 'JAIPUR') UNION ALL SELECT * FROM EMPLOYEE;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt die records op waarvan de werknemers behoren tot de stad 'Pune', 'Mumbai' en 'Jaipur' uit de tabel Werknemers. De bewerking UNION ALL wordt uitgevoerd met de records die zijn opgehaald uit de tweede SELECT-query van de tabelmedewerker.
De volgende uitvoer wordt weergegeven als:
Beide tabelrecords worden weergegeven, inclusief dubbele records als we UNION ALL-bewerkingen uitvoeren.
Voorbeeld 4: Voer een query uit om de UNION ALL-bewerking uit te voeren tussen Manager-tabel en Manager1-tabel.
SELECT * FROM MANAGER UNION ALL SELECT * FROM MANAGER1;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt de gegevens op uit Manager en voert UNION ALL-bewerkingen uit met de gegevens die worden opgehaald door de tweede SELECT-query om de gegevens op te halen uit de manager1-tabel.
De volgende uitvoer wordt weergegeven als:
Alle records worden weergegeven van zowel de tabellen Manager als Manager1; dubbele records worden weergegeven als we UNION ALL-bewerkingen uitvoeren.
INTERSECT-operators
Intersect-operator wordt gebruikt om twee of meer SELECT-instructies te combineren, maar het geeft alleen de gegevens weer die vergelijkbaar zijn met de SELECT-instructie.
De syntaxis voor de INTERSECT-bewerking is als volgt,
SELECT * FROM TABLE_NAME1 INTERSECT SELECT * FROM TABLE_NAME2;
Voorbeeld 1: Voer een query uit om de INTERSECT-bewerking uit te voeren tussen de werknemerstabel en de werknemerstabel.
SELECT * FROM EMPLOYEES INTERSECT SELECT * FROM EMPLOYEE;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt de gegevens op van werknemers en voert de INTERSECT-bewerking uit met de gegevens die worden opgehaald door de tweede SELECT-query om de gegevens op te halen uit de werknemerstabel.
De volgende uitvoer wordt weergegeven als:
Uit beide tabellen worden alleen vergelijkbare records weergegeven, aangezien we de INTERSECT-bewerking hebben uitgevoerd tussen de tabel Werknemers en de tabel Werknemers.
Voorbeeld 2: Voer een query uit om de INTERSECT-bewerking uit te voeren tussen Manager-tabel en Manager1-tabel.
SELECT * FROM MANAGER INTERSECT SELECT * FROM MANAGER1;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt de gegevens op uit Manager en voert de INTERSECT-bewerking uit met de gegevens die worden opgehaald door de tweede SELECT-query om de gegevens op te halen uit de Manager1-tabel.
De volgende uitvoer wordt weergegeven als:
Uit beide tabellen worden alleen vergelijkbare records weergegeven, aangezien we de INTERSECT-bewerking hebben uitgevoerd tussen Manager-tabel en Manager1-tabel.
MIN-operators
De operator MINUS wordt gebruikt om de rijen te retourneren die aanwezig zijn in de eerste zoekopdracht, maar afwezig zijn in de rest van de zoekopdrachten zonder duplicaten.
De syntaxis voor de MINUS-bewerking is als volgt.
SELECT * FROM TABLE_NAME1 EXCEPT SELECT * FROM TABLE_NAME2;
Opmerking: MINUS-sleutelwoord wordt alleen ondersteund in ORACLE-databases. We kunnen het trefwoord BEHALVE gebruiken voor andere databases om een vergelijkbare bewerking uit te voeren.
Voorbeeld 1: Voer een query uit om de MINUS-bewerking uit te voeren tussen de werknemerstabel en de werknemerstabel.
SELECT * FROM EMPLOYEES EXCEPT SELECT * FROM EMPLOYEE;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt de gegevens op van werknemers en voert de MINUS-bewerking uit met de gegevens die worden opgehaald door de tweede SELECT-query om de gegevens op te halen uit de werknemerstabel.
De volgende uitvoer wordt weergegeven als:
Alleen niet-overeenkomende records worden weergegeven in beide tabellen, aangezien we de MINUS-bewerking hebben uitgevoerd tussen de tabel Werknemers en de tabel Werknemers.
Voorbeeld 2: Voer een query uit om de MINUS-bewerking uit te voeren tussen Manager-tabel en Manager1-tabel.
SELECT * FROM MANAGER EXCEPT SELECT * FROM MANAGER1;
In de bovenstaande query hebben we twee SELECT-query's gebruikt. De eerste SELECT-query haalt de gegevens op uit Manager en voert de MINUS-bewerking uit met de gegevens die worden opgehaald door de tweede SELECT-query om de gegevens op te halen uit de Manager1-tabel.
De volgende uitvoer wordt weergegeven als:
Alleen niet-overeenkomende records worden weergegeven in beide tabellen, aangezien we de MINUS-bewerking hebben uitgevoerd tussen Manager-tabel en Manager1-tabel.