Set operations help combine or compare data from two or more tables easily. They let you find common, different, or all data without writing complex code.
Why set operations are needed in SQL
Start learning this pattern below
Jump into concepts and practice - no test required
SELECT column_list FROM table1 UNION | UNION ALL | INTERSECT | EXCEPT SELECT column_list FROM table2;
All SELECT statements must have the same number of columns and compatible data types.
UNION removes duplicates, UNION ALL keeps all rows, INTERSECT finds common rows, EXCEPT finds rows in first but not in second.
SELECT name FROM customers_in_storeA UNION SELECT name FROM customers_in_storeB;
SELECT product_id FROM online_products INTERSECT SELECT product_id FROM physical_store_products;
SELECT employee_id FROM departmentX EXCEPT SELECT employee_id FROM departmentY;
This example creates two tables with customer names from two stores. The UNION query lists all unique customers who bought from either store.
CREATE TABLE storeA_customers (name VARCHAR(20)); CREATE TABLE storeB_customers (name VARCHAR(20)); INSERT INTO storeA_customers VALUES ('Alice'), ('Bob'), ('Charlie'); INSERT INTO storeB_customers VALUES ('Bob'), ('Diana'); SELECT name FROM storeA_customers UNION SELECT name FROM storeB_customers;
Set operations work best when columns match in number and type.
UNION removes duplicates, so it can be slower than UNION ALL.
Not all databases support INTERSECT and EXCEPT; check your system.
Set operations combine or compare data from multiple tables simply.
They help find common, different, or all unique rows.
Use UNION, INTERSECT, and EXCEPT to answer real-world questions about data overlap and difference.
Practice
UNION and INTERSECT in SQL?Solution
Step 1: Understand the purpose of set operations
Set operations like UNION and INTERSECT are designed to combine or compare rows from multiple tables.Step 2: Identify what set operations do not do
They do not create tables, update, or delete rows; those are different SQL commands.Final Answer:
To combine or compare rows from two or more tables easily -> Option DQuick Check:
Set operations combine or compare data [OK]
- Confusing set operations with data modification commands
- Thinking UNION creates a new permanent table
- Assuming INTERSECT deletes rows
Solution
Step 1: Recall correct UNION syntax
The correct syntax is to write one SELECT query, then UNION, then another SELECT query.Step 2: Check each option for syntax errors
SELECT * FROM table1 UNION SELECT * FROM table2; follows the correct syntax. Options A, B, and D have incorrect keywords or order.Final Answer:
SELECT * FROM table1 UNION SELECT * FROM table2; -> Option CQuick Check:
Correct UNION syntax = SELECT * FROM table1 UNION SELECT * FROM table2; [OK]
- Adding JOIN keyword with UNION
- Using commas instead of UNION
- Placing UNION at the end incorrectly
Table A: {1, 2, 3}Table B: {2, 3, 4}What is the result of
SELECT * FROM A INTERSECT SELECT * FROM B;?Solution
Step 1: Understand INTERSECT operation
INTERSECT returns only rows present in both tables.Step 2: Find common elements in Table A and Table B
Common elements are 2 and 3.Final Answer:
{2, 3} -> Option AQuick Check:
INTERSECT = common rows [OK]
- Confusing INTERSECT with UNION
- Including all rows from both tables
- Mixing up EXCEPT with INTERSECT
SELECT * FROM table1 UNION table2;What is the error and how to fix it?
Solution
Step 1: Identify syntax error in UNION usage
UNION requires two complete SELECT statements, but second query lacks SELECT.Step 2: Correct the query syntax
AddSELECT * FROMbeforetable2to fix the error.Final Answer:
Missing SELECT before table2; fix by adding SELECT * FROM table2 -> Option AQuick Check:
UNION needs two SELECTs [OK]
- Omitting SELECT in second query
- Using UNION with tables directly
- Adding unnecessary parentheses
List A: customers who bought product XList B: customers who bought product YHow do you find customers who bought either product X or Y but not both using set operations?
Solution
Step 1: Understand the problem
We want customers who bought product X or Y but not both (exclusive customers).Step 2: Use EXCEPT and UNION to find exclusive customers
Find customers in A but not in B, and customers in B but not in A, then combine them with UNION.Step 3: Check other options
SELECT * FROM A UNION SELECT * FROM B gives all customers who bought either product (including both). SELECT * FROM A INTERSECT SELECT * FROM B gives only those who bought both. (SELECT * FROM A EXCEPT SELECT * FROM B) UNION (SELECT * FROM A INTERSECT SELECT * FROM B) gives all customers who bought product X.Final Answer:
(SELECT * FROM A EXCEPT SELECT * FROM B) UNION (SELECT * FROM B EXCEPT SELECT * FROM A) -> Option BQuick Check:
Exclusive customers = (A EXCEPT B) UNION (B EXCEPT A) [OK]
- Using UNION alone includes both customers
- Using INTERSECT returns only common customers
- Confusing EXCEPT with INTERSECT
