
SQL์ ๋จ์ํ ํ
์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ,
์ฌ๋ฌ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์กฐํฉํ๊ฑฐ๋ ๋น๊ตํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ SQL์ ์งํฉ ์ฐ์ฐ์๋ค์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
๋ ๊ฐ ์ด์์ SELECT ๊ฒฐ๊ณผ๋ฅผ ํ๋๋ก ๋ฌถ๊ฑฐ๋ ๋น๊ตํ ์ ์๋๋ก ํด์ฃผ๋ ์ฐ์ฐ์
๋๋ค.
โ ์ํ์์์ ํฉ์งํฉ, ๊ต์งํฉ, ์ฐจ์งํฉ ๊ฐ๋
์ SQL๋ก ๊ตฌํํ ๊ฑฐ์์.
| ์ฐ์ฐ์ | ์๋ฏธ | ์ค๋ช |
|---|---|---|
UNION | ํฉ์งํฉ | ๋ ๊ฒฐ๊ณผ๋ฅผ ํฉ์ณ ์ค๋ณต ์ ๊ฑฐ |
UNION ALL | ํฉ์งํฉ (์ค๋ณต ํ์ฉ) | ๋ ๊ฒฐ๊ณผ๋ฅผ ํฉ์ณ ์ค๋ณต๊น์ง ๋ชจ๋ ํฌํจ |
INTERSECT | ๊ต์งํฉ | ๋ ๊ฒฐ๊ณผ์ ๋ชจ๋ ํฌํจ๋๋ ๊ฐ๋ง ๋ฐํ |
EXCEPT | ์ฐจ์งํฉ | ์ฒซ ๋ฒ์งธ ๊ฒฐ๊ณผ์์ ๋ ๋ฒ์งธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ธ |
MINUS | ์ฐจ์งํฉ (Oracle ์ ์ฉ) | Oracle์์ EXCEPT ๋์ ์ฌ์ฉ |
๐ ์ฃผ์: ์งํฉ ์ฐ์ฐ์ ์ฐ๋ ค๋ฉด
- SELECT ์ ์ ์ปฌ๋ผ ์์ ํ์ ์ด ๋์ผํด์ผ ํฉ๋๋ค!
| name |
|---|
| ๊น์ฒ ์ |
| ์ด์ํฌ |
| ๋ฐ๋ฏผ์ |
SELECT name FROM Student_A;
| name |
|---|
| ์ด์ํฌ |
| ์ ์๋ฆฐ |
| ๋ฐ๋ฏผ์ |
SELECT name FROM Student_B;
SELECT name FROM Student_A
UNION
SELECT name FROM Student_B;
| ๊ฒฐ๊ณผ name |
|---|
| ๊น์ฒ ์ |
| ์ด์ํฌ |
| ๋ฐ๋ฏผ์ |
| ์ ์๋ฆฐ |
๐ ๋ SELECT ๊ฒฐ๊ณผ๋ฅผ ํฉ์น๋, ์ค๋ณต์ ์ ๊ฑฐ
SELECT name FROM Student_A
UNION ALL
SELECT name FROM Student_B;
| ๊ฒฐ๊ณผ name |
|---|
| ๊น์ฒ ์ |
| ์ด์ํฌ |
| ๋ฐ๋ฏผ์ |
| ์ด์ํฌ |
| ์ ์๋ฆฐ |
| ๋ฐ๋ฏผ์ |
SELECT name FROM Student_A
INTERSECT
SELECT name FROM Student_B;
| ๊ฒฐ๊ณผ name |
|---|
| ์ด์ํฌ |
| ๋ฐ๋ฏผ์ |
-- PostgreSQL / SQL Server
SELECT name FROM Student_A
EXCEPT
SELECT name FROM Student_B;
-- Oracle
SELECT name FROM Student_A
MINUS
SELECT name FROM Student_B;
| ๊ฒฐ๊ณผ name |
|---|
| ๊น์ฒ ์ |
๐ฏ A. ์ฃผ๋ฌธํ ๊ณ ๊ฐ + ๋ฏธ์ฃผ๋ฌธ ๊ณ ๊ฐ ํฌํจ (์ค๋ณต ์ ๊ฑฐ)
SELECT custid FROM Orders
UNION
SELECT custid FROM Customer;
๐ฏ B. ์ฃผ๋ฌธํ ์ ์๋ ๊ณ ๊ฐ ID ์ ์ฒด (์ค๋ณต ํฌํจ)
SELECT custid FROM Orders
UNION ALL
SELECT custid FROM Orders; -- ์์๋ฅผ ์ํด ์ค๋ณต
๐ฏ C. ์ฃผ๋ฌธํ ๊ณ ๊ฐ ์ค ์ฌ์์ด๊ธฐ๋ ํ ์ฌ๋
SELECT name FROM Customer
INTERSECT
SELECT name FROM Employee;
๐ฏ D. ์ฃผ๋ฌธ ์ ํ ๊ณ ๊ฐ ์ฐพ๊ธฐ
SELECT name FROM Customer
EXCEPT
SELECT name FROM (
SELECT DISTINCT name
FROM Customer C
JOIN Orders O ON C.custid = O.custid
);
SELECT name FROM A
UNION
SELECT name FROM B
ORDER BY name; -- OK
| ์ฐ์ฐ์ | ์ค๋ช | ๊ฒฐ๊ณผ ์์ |
|---|---|---|
UNION | ํฉ์งํฉ (์ค๋ณต ์ ๊ฑฐ) | ๊น์ฒ ์, ์ด์ํฌ, ๋ฐ๋ฏผ์, ์ ์๋ฆฐ |
UNION ALL | ํฉ์งํฉ (์ค๋ณต ํฌํจ) | ๊น์ฒ ์, ์ด์ํฌ, ๋ฐ๋ฏผ์, ์ด์ํฌ, ์ ์๋ฆฐ, ๋ฐ๋ฏผ์ |
INTERSECT | ๊ต์งํฉ (๊ณตํต๋ ๊ฐ๋ง ์ถ์ถ) | ์ด์ํฌ, ๋ฐ๋ฏผ์ |
EXCEPT | ์ฐจ์งํฉ (์ ํ ์ด๋ธ์๋ง ์๋ ๊ฐ) | ๊น์ฒ ์ |
๐ ํ์ต ํ
โข ์งํฉ ์ฐ์ฐ์ ์ฟผ๋ฆฌ ๋ ๊ฐ๋ฅผ ํ๋๋ก ์ฐ๊ฒฐํ ์ ์์ด ์ ์ฉ
โข ์ค๋ณต ์ ๊ฑฐ๊ฐ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ผ๋ UNION ALL์ด ๋ ๋น ๋ฆ
โข INTERSECT, EXCEPT์ ์กฐ๊ฑด ํํฐ๋ง๋ณด๋ค ์ง๊ด์ ์ผ ๋ ์ ๋ฆฌํจ
โข UNION๊ณผ UNION ALL์ ์ฑ๋ฅ ์ฐจ์ด ๊ธฐ์ต!
โข INTERSECT, EXCEPT์ ์ปฌ๋ผ ์์ ์์๊ฐ ๋์ผํด์ผ ์๋
โข ORDER BY๋ ์ ์ฒด ์งํฉ ์ฐ์ฐ ๋ค์๋ง ์ฌ์ฉ ๊ฐ๋ฅ