๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๋ค ๋ณด๋ฉด ์ฌ๋ฌ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ณ ์ด๋ฅผ ํ๋์ ๊ฒฐ๊ณผ๋ก ํตํฉํด์ผ ํ ๋๊ฐ ๋ง์ต๋๋ค. ์ด๋ MariaDB์ Union ์ฐ์ฐ์๋ ๋งค์ฐ ์ ์ฉํ ๋๊ตฌ๊ฐ ๋ฉ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ Union์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ ํ์ฉ๋ฒ, ์ฃผ์์ฌํญ๊น์ง ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
โฃ ๋ชฉ์ฐจ
UNION๊ณผ JOIN์ ์ ์ฌํ ๊ธฐ๋ฅ์ ํ์ง๋ง ์ค์ํ ์ฐจ์ด๊ฐ ์์ต๋๋ค. UNION์ ๋ ๊ฐ ์ด์์ SELECT ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ JOIN์ ๋ ํ
์ด๋ธ์ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ๊ฒฐํฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. JOIN์ ๊ดํ ๋ด์ฉ์ ์๋ ํฌ์คํ
์ ์ฐธ๊ณ ํด ์ฃผ์ธ์
UNION ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์ข ๋ฅ๐
1. UNION์ ์ ์
UNION์ ๋ ๊ฐ ์ด์์ SELECT ๋ฌธ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉํ์ฌ ํ๋์ ๊ฒฐ๊ณผ ์งํฉ์ผ๋ก ๋ง๋๋ SQL ์ฐ์ฐ์์ ๋๋ค. ์ด ์ฐ์ฐ์๋ฅผ ํตํด ์ฌ๋ฌ ํ ์ด๋ธ์ด๋ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ํ๋๋ก ํฉ์น ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ๋ฌธ๋ฒ
SELECT `column1`, `column2` FROM `table1`
UNION
SELECT `column1`, `column2` FROM `table2`;
์ฅ์
- ๋ฐ์ดํฐ ํตํฉ:์ฌ๋ฌ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๊ฒฐ๊ณผ๋ก ๊ฒฐํฉํฉ๋๋ค.
- ์ค๋ณต ์ ๊ฑฐ:Union์ ์ฌ์ฉํ์ฌ ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ ๊ฑฐ ๊ฐ๋ฅํฉ๋๋ค.
- ํจ์จ์ฑ:๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ๋จํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
์์ ๋ฐ์ดํฐ
์๋๋ UNION๊ณผ UNION ALL ์์ ์ ์ฌ์ฉํ customers ํ ์ด๋ธ๊ณผ suppliers ํ ์ด๋ธ์ ์์ ๋ฐ์ดํฐ์ ๋๋ค.
customers ํ
์ด๋ธ
id | name | city |
---|---|---|
1 | Alice | New York |
2 | Bob | Los Angeles |
3 | Charlie | New York |
4 | David | Chicago |
suppliers ํ
์ด๋ธ
id | company_name | city |
---|---|---|
1 | Supplier A | New York |
2 | Supplier B | Chicago |
3 | Supplier C | Boston |
4 | Supplier D | San Francisco |
2. UNION์ ์ข ๋ฅ
UNION
Union ์ฐ์ฐ์๋ ๋ ๊ฐ ์ด์์ SELECT ๋ฌธ์์ ๋ฐํ๋ ๊ฒฐ๊ณผ ์งํฉ์ ๊ฒฐํฉํ๊ณ , ์ค๋ณต๋ ํ์ ์ ๊ฑฐํฉ๋๋ค. ์ด๋ ์ต์ข ๊ฒฐ๊ณผ ์งํฉ์ ์ค๋ณต๋ ํ์ด ์์์ ๋ณด์ฅํฉ๋๋ค.
ํน์ง
- ์ค๋ณต ์ ๊ฑฐ: ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ํํ ๊ฒฝ์ฐ, ํ ๋ฒ๋ง ๊ฒฐ๊ณผ์ ํฌํจ๋ฉ๋๋ค.
- ์ ๋ ฌ: Union์ ์ค๋ณต์ ์ ๊ฑฐํ๋ ๊ณผ์ ์์ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํฉ๋๋ค. ํ์ง๋ง ๋ช ์์ ์ผ๋ก ์ ๋ ฌ ์์๋ฅผ ์ง์ ํ๋ ค๋ฉด ORDER BY ์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
SELECT `city` FROM `customers`
UNION
SELECT `city` FROM `suppliers`;
๊ฒฐ๊ณผ
city |
---|
New York |
Los Angeles |
Chicago |
Boston |
San Francisco |
UNION ALL
Union All ์ฐ์ฐ์๋ ๋ ๊ฐ ์ด์์ SELECT ๋ฌธ์์ ๋ฐํ๋ ๊ฒฐ๊ณผ ์งํฉ์ ๊ฒฐํฉํ๋ฉฐ, ์ค๋ณต๋ ํ๋ ๋ชจ๋ ํฌํจํ์ฌ ๋ฐํํฉ๋๋ค. ์ฆ, ์ค๋ณต๋ ํ์ ์ ๊ฑฐํ์ง ์์ต๋๋ค.
ํน์ง
- ์ค๋ณต ํฌํจ: ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ํํ ๊ฒฝ์ฐ, ๋ชจ๋ ํ์ด ๊ฒฐ๊ณผ์ ํฌํจ๋ฉ๋๋ค.
- ์ ๋ ฌ ์์: Union All์ ์ค๋ณต์ ์ ๊ฑฐํ์ง ์๊ธฐ ๋๋ฌธ์ Union๋ณด๋ค ๋น ๋ฅด๊ฒ ์ํ๋ ์ ์์ต๋๋ค.
SELECT `city` FROM `customers`
UNION ALL
SELECT `city` FROM `suppliers`;
๊ฒฐ๊ณผ
city |
---|
New York |
Los Angeles |
New York |
Chicago |
New York |
Chicago |
Boston |
San Francisco |
3. UNION๊ณผ UNION ALL์ ์ฐจ์ด์
- UNION: ์ค๋ณต๋ ํ์ ์ ๊ฑฐํ๊ณ ๊ฒฐํฉํฉ๋๋ค.
- UNION ALL: ์ค๋ณต๋ ํ์ ํฌํจํ์ฌ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉํฉ๋๋ค.
4. ์ฑ๋ฅ ๊ณ ๋ ค์ฌํญ
Union All์ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก Union๋ณด๋ค ์ฑ๋ฅ์ด ๋ ์ข์ต๋๋ค. ๋ฐ๋ผ์, ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด๋ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด Union All์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
UNION ํ์ฉ ์์ ๐
์์ ๋ฐ์ดํฐ
์๋๋ ํ์ฉ ์์ ์์ ์ฌ์ฉํ ์์ ๋ฐ์ดํฐ์ ๋๋ค.
employees ํ
์ด๋ธ
id | name | age | city |
---|---|---|---|
1 | Alice | 35 | 1 |
2 | Bob | 28 | 2 |
3 | Charlie | 40 | 1 |
contractors ํ
์ด๋ธ
id | name | age | city |
---|---|---|---|
1 | Dave | 45 | 2 |
2 | Eve | 29 | 2 |
3 | Frank | 50 | 3 |
departments ํ
์ด๋ธ
id | department_name |
---|---|
1 | HR |
2 | IT |
3 | Finance |
๋ณต์กํ ํด๋ฆฌ์์์ UNION ํ์ฉ ์์
1. ์๋ธ์ฟผ๋ฆฌ์ UNION ๊ฒฐํฉ
์๋ธ์ฟผ๋ฆฌ์ UNION์ ๊ฒฐํฉํ์ฌ ๋์ฑ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์ต๋๋ค.
SELECT `id`, `name` FROM (SELECT `id`, `name` FROM `employees` WHERE `age` > 30)
UNION
SELECT `id`, `name` FROM (SELECT `id`, `name` FROM `contractors` WHERE `age` > 30);
์ด ์ฟผ๋ฆฌ๋ employees์ contractors ํ ์ด๋ธ์์ ๋์ด๊ฐ 30์ด ์ด์์ธ ์ฌ๋๋ค์ id์ name์ ์ ํํ๊ณ , ์ด๋ฅผ ํ๋์ ๊ฒฐ๊ณผ ์งํฉ์ผ๋ก ๊ฒฐํฉํฉ๋๋ค.
๊ฒฐ๊ณผ
id | name |
---|---|
1 | Alice |
3 | Charlie |
1 | Dave |
3 | Frank |
2. ์๋ธ์ฟผ๋ฆฌ์ UNION ๊ฒฐํฉ
์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํ ํ UNION์ ์ฌ์ฉํ๋ ์์ ์ ๋๋ค.
SELECT `e`.`name`, `d`.`department_name`
FROM `employees` AS `e`
JOIN `departments` AS `d` ON `e`.`department_id` = `d`.`id`
UNION
SELECT `c`.`name`, `d`.`department_name`
FROM `contractors` AS `c`
JOIN `departments` AS `d` ON `c`.`department_id` = `d`.`id`;
employees์ contractors ํ ์ด๋ธ์์ ๊ฐ๊ฐ ๋ถ์ ์ ๋ณด๋ฅผ ๊ฒฐํฉํ์ฌ ์ด๋ฆ๊ณผ ๋ถ์๋ช ์ ํ๋์ ๊ฒฐ๊ณผ ์งํฉ์ผ๋ก ๋ฐํํฉ๋๋ค. UNION์ ์ฌ์ฉํ์ฌ ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํฉ๋๋ค.
๊ฒฐ๊ณผ
name | department_name |
---|---|
Alice | HR |
Charlie | HR |
Bob | IT |
Dave | IT |
Eve | HR |
Frank | Finance |
์ฃผ์ํ ์ ๊ณผ ์ต์ ํ ๋ฐฉ๋ฒโ ๏ธ
์ฃผ์ํ ์
- SELECT ๋ฌธ์ ๋ฐ๋์ ๊ดํธ๋ก ๊ฐ์ธ์ผ ํฉ๋๋ค.
- ๋์ผํ ์นผ๋ผ ์์ ๋ฐ์ดํฐ ํ์ : ๊ฐ SELECT ๋ฌธ์ ๋์ผํ ์ปฌ๋ผ ์์ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
- ์ ๋ ฌ ์์: Union ๊ฒฐ๊ณผ์ ์ ๋ ฌ ์์๋ฅผ ๋ณด์ฅํ๋ ค๋ฉด ORDER BY๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ต์ ํ ๋ฐฉ๋ฒ
- ์ธ๋ฑ์ค ํ์ฉ: Union ์ฐ์ฐ์ ์ฌ์ฉ๋๋ ํ ์ด๋ธ์ ์ ์ ํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ์ฌ ์ฑ๋ฅ์ ํฅ์ํ ์ ์์ต๋๋ค.
- ํ์ํ ๋ฐ์ดํฐ๋ง ์ ํ: SELECT ๋ฌธ์์ ํ์ํ ์นผ๋ผ๋ง ์ ํํ์ฌ ๋ถํ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๊ฐ์ ์ค์ ๋๋ค.
ํต์ฌ ๋ด์ฉ๐