๋ชฉํ
- ์ฌ๋ฌ ์ด ์๋ธ ์ฟผ๋ฆฌ ์์ฑ
- ๋ ๊ฐ์ด ๊ฒ์๋๋ ๊ฒฝ์ฐ ์๋ธ ์ฟผ๋ฆฌ์ ๊ธฐ๋ฅ ์ค๋ช
- From ์ ์ ์๋ธ ์ฟผ๋ฆฌ ์์ฑ
- SQL์์ ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ ์ฌ์ฉ
- ์๊ด ์๋ธ ์ฟผ๋ฆฌ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ ํ ์ค๋ช
- ์๊ด ์๋ธ ์ฟผ๋ฆฌ ์์ฑ
- ์๊ด ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ํ ๊ฐฑ์ ๋ฐ ์ญ์
- Exists ๋ฐ Not exists ์ฐ์ฐ์ ์ฌ์ฉ
- With ์ ์ฌ์ฉ
1. ์๋ธ์ฟผ๋ฆฌ
์๋ธ ์ฟผ๋ฆฌ(๋ด๋ถ ์ง์)๋ ๊ธฐ๋ณธ ์ง์ ์คํ ์ ์ ํ ๋ฒ ์คํ๋จ
์๋ธ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ ๊ธฐ๋ณธ ์ง์(๋ฉ์ธ์ฟผ๋ฆฌ)์ ์ฌ์ฉ๋จ
149๋ฒ ์ฌ์์ด ๋ฐ๋ ์ฌ์์ ๊ธ์ฌ๋ณด๋ค ๋์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ฌ์์ ๋ง์ง๋ง ์ฑ์ ๋ณด์ฌ์ฃผ์์ค

10500 ๋ณด๋ค ํฐ ๊ธ์ก

1.1 ์๋ธ์ฟผ๋ฆฌ
Q. ํ์ฌ์ ํ๊ท ๊ธ์ฌ๋ณด๋ค ์ ์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ฌ์์ ์ด๋ฆ์ ๋ชจ๋ ํ์ํ์์ค

2. ๋ค์ค ์ด ์๋ธ์ฟผ๋ฆฌ
- ์(pairwise)๋น๊ต
- ๋น์(nonpairwise)๋น๊ต
150๋ฒ ์ฌ์์ด ๊ทผ๋ฌดํ๋ ๋ถ์์ ๊ทผ๋ฌดํ๋ ์ฌ์์ค 149๋ฒ ์ฌ์๋ณด๋ค ๋ ๋ง์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ฌ์๋์ด ์ด๋ฆ๊ณผ ๊ธ์ฌ ๊ทธ๋ฆฌ๊ณ ๋ถ์๋ฒํธ๋ฅผ ์ฐพ์ผ์์ค.
์ฐ์ 150๋ฒ ์ฌ์์ด ๊ทผ๋ฌดํ๋ ๋ถ์?

select department_id
from employees
where employee_id=150
149๋ฒ ์ฌ์์ด ๋ฐ๋ ๊ธ์ฌ
select salary
from employees
where employee_id =149
์ด ๋๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ํฉ์ณ์ผํ๋ ๊ฒฝ์ฐ์ด๋ค.

์ฟผ๋ฆฌ ์ญ ํด์

174๋ฒ ์ฌ์์ 149๋ฒ ์ฌ์์๊ฒ ๊ด๋ฆฌ๋ฅผ ๋ฐ๊ณ ํ์ฌ 80๋ฒ ๋ถ์์ ๋ฐฐ์ ๋ฐ์์๋ค
178๋ฒ ์ฌ์์ 149๋ฒ ์ฌ์์๊ฒ ๊ด๋ฆฌ๋ฅผ ๋ฐ๊ณ ํ์ฌ ๋ถ์์ ๋ฐฐ์ ๋ฐ์ ์์ง๋ ์๋ค.
๋น์ ๋น๊ต ์๋ธ ์ฟผ๋ฆฌ
Q.์ฌ์ ๋ฒํธ๊ฐ 174๋๋ 141์ธ ์ฌ์๊ณผ ๊ด๋ฆฌ์๊ฐ ๊ฐ์ผ๋ฉฐ
์ฌ์๋ฒํธ๊ฐ 174๋๋ 141์ธ ์ฌ์๊ณผ ๋ถ์๊ฐ ๊ฐ์ ์ฌ์ ์ ๋ณด๋ฅผ ํ์ํ๊ธฐ
*์ฌ์์ ๋ณด๋ ์ฌ์๋ฒํธ, ๊ด๋ฆฌ์, ์ฌ์ ๋ถ์์ด๋ค.
employee_id, manager_id, department_id
์ด๋ ๊ฒ ์ฐพ์ผ๋ฉด 149๋ฒ 124๋ฒ
select manager
from employeees
where employee_id in (174,141)
์ด๋ ๊ฒ ์ฐพ์ผ๋ฉด ๋ถ์๋ฒํธ๊ฐ 50๋ฒ, 80๋ฒ
select department_id
from employees
where employee_id in (174,141)

์ฒซ๋ฒ์งธ sql๋ฌธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ


order by ์ ์ ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ
10. ์ํธ๊ด๋ จ ์๋ธ ์ฟผ๋ฆฌ(correlated subquery)
ํน์ดํ ๊ตฌ์กฐ
๋ฉ์ธ ์ฟผ๋ฆฌ๊ฐ ๋จผ์ ์ํ๋๊ณ ์ดํ์ ์๋ธ์ฟผ๋ฆฌ๊ฐ ์ํ๋จ
Q. ์์ ๋ถ์์ ํ๊ท ๊ธ์ฌ๋ณด๋ค ๋ง์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ฌ์์ ๋ชจ๋ ์ฐพ์ผ์์ค.
method1. ์ํธ ๊ด๋ จ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฐ์ง ์๋ ๊ฒฝ์ฐ
๋ถ์๊ฐ 10์ธ ๊ฒฝ์ฐ, 20์ธ ๊ฒฝ์ฐ,... ์ด๋ ๊ฒ ๋ชจ๋ ๋ถ์์ ๋ํด์.

method2. ์ํธ ๊ด๋ จ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ด ๊ฒฝ์ฐ


10.1 ์ํธ๊ด๋ จ ์๋ธ ์ฟผ๋ฆฌ(correlated subquery)
์ ๋ฌด๋ฅผ ๋ ๋ฒ ์ด์ ๋ฐ๊พผ ์ฌ์์ ๋ํ ์ ๋ณด๋ฅผ ํ์ํ๊ธฐ
์ง์
select e.employee_id, last_name, e.job_id
from employees e
where 2 <= (select count(*)
from job_history
where employee_id = e.employee_id)

11. exists ์ฐ์ฐ์ ์ฌ์ฉ
-์๋ธ์ฟผ๋ฆด์ ๊ฒฐ๊ณผ ์งํฉ์ ํ์ด ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฌ
-์๋ธ์ฟผ๋ฆฌ ํ ๊ฐ์ด ๋ฐ๊ฒฌ๋๋ ๊ฒฝ์ฐ :๋ด๋ถ ์ง์์์ ๋ ์ด์ ๊ฒ์ํ์ง ์์
์กฐ๊ฑดํ๋๊ทธ๊ฐ true๊ฐ ๋จ
-์๋ธ์ฟผ๋ฆฌ ํ ๊ฐ์ด ๋ฐ๊ฒฌ๋์ง ์๋ ๊ฒฝ์ : ์กฐ๊ฑด ํ๋๊ทธ๊ฐ false๊ฐ ๋จ
๋ด๋ถ ์ง์์์ ๊ฒ์์ ๊ฒ์ํจ
12. ์ํธ ๊ด๋ จ update
์ํธ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ชใด ๋ค๋ฅธ ํ ์ด๋ธ์ ํ์ ๋ฐ๋ผ ํ ์ด๋ธ์ ํ์ ๊ฐฑ์ ํ ์ ์๋ค!
Q. ๋ถ์ ์ด๋ฆ์ ์ ์ฅํ๊ธฐ ์ํ ์ด์ ์ถ๊ฐํ์ฌ employees ํ ์ด๋ธ์ ๋น์ ๊ทํํ๊ธฐ
์ํธ ๊ด๋ จ update๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ์ ์ฑ์ด๋ค


'๐๏ธ์ํํธ์จ์ด > ๐SQL & MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle SQL] Windows ํจ์ 1 (0) | 2021.11.03 |
---|---|
[Oracle SQL] Windows ํจ์ (0) | 2021.11.03 |
[Oracle SQL]DB ๊ด๋ จ ๋ช ๋ น์ด (0) | 2021.11.03 |
[MySQL] Ch2.๋ฐ์ดํฐ ์ ํ ๋ฐ ์ ๋ ฌ (0) | 2021.11.02 |
[MySQL] Ch1.๊ธฐ๋ณธ SQL Select๋ฌธ ์์ฑ (0) | 2021.11.02 |
- ๋ชฉํ
- 1. ์๋ธ์ฟผ๋ฆฌ
- 1.1 ์๋ธ์ฟผ๋ฆฌ
- 2. ๋ค์ค ์ด ์๋ธ์ฟผ๋ฆฌ
- 150๋ฒ ์ฌ์์ด ๊ทผ๋ฌดํ๋ ๋ถ์์ ๊ทผ๋ฌดํ๋ ์ฌ์์ค 149๋ฒ ์ฌ์๋ณด๋ค ๋ ๋ง์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ฌ์๋์ด ์ด๋ฆ๊ณผ ๊ธ์ฌ ๊ทธ๋ฆฌ๊ณ ๋ถ์๋ฒํธ๋ฅผ ์ฐพ์ผ์์ค.
- ๋น์ ๋น๊ต ์๋ธ ์ฟผ๋ฆฌ
- 10. ์ํธ๊ด๋ จ ์๋ธ ์ฟผ๋ฆฌ(correlated subquery)
- 10.1 ์ํธ๊ด๋ จ ์๋ธ ์ฟผ๋ฆฌ(correlated subquery)
- 11. exists ์ฐ์ฐ์ ์ฌ์ฉ
- 12. ์ํธ ๊ด๋ จ update