- Today
- Total
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- ์ฌ์กฐ์ฌ2๊ธ ์์ ํ
- ์ฃผํผํฐ๋ ธํธ๋ถ๋จ์ถํค
- ๋ฉ์ฌ๋ถํธ์บ ํ
- ๋ฐ์ดํฐ๋ถ์
- ๋ฉ์์ด์ฌ์์ฒ๋ผ๋ถํธ์บ ํ
- ๋ฉ์์ด์ฌ์์ฒ๋ผ ๋ถํธ์บ ํ
- ๋ฐ์ดํฐ๋ถ์ ๋ ํ
- ์กฐ์ธ์ฐ์ฐ์
- ์ฌ์กฐ์ฌ2๊ธ ๊ธฐ์ถ๋ฌธ์
- ์ฌ์กฐ์ฌ๊ธฐ์ถ
- ์ฌ์กฐ์ฌ2๊ธ ์ค๊ธฐ๊ธฐ์ถ
- SQL
- ๋ฐ์ดํฐ๋ถ์๋ถํธ์บ ํ
- ๋ฉ์ฌํ๊ธฐ
- ์ํฌ๋ฒค์น ์ค๋ฅ
- ๋งฅ๋ถ ์ํฌ๋ฒค์น ๋๊ตฌ ์๋ณด์
- ๋ฉ์์ด์ฌ์์ฒ๋ผ ๋ฐ์ดํฐ๋ถ์
- ๋งฅ๋ถ ์ํฌ๋ฒค์น์ค๋ฅ
- ํ๋ก์ ํธ ํ๊ณ ๋ก
- ํ์ด์ฌ
- ๊นํ๋ธ ์ด๊ธฐ์ค์
- ๋ฉ์์ด์ฌ์์ฒ๋ผ๋ฐ์ดํฐ๋ถ์
- ํ์ด์ฌ๊ธฐ์ด
- ๋ฉ์์ด์ฌ์์ฒ๋ผํ๊ธฐ
- EDA
- ํ์ด์ฌ์์
- ๋ฉ์์ด์ฌ์์ฒ๋ผ
- ์นํฌ๋กค๋ง
- ๋ฉ์ฌ ๋ฐ์ดํฐ๋ถ์
- ๋ฉ์์ด์ฌ์์ฒ๋ผ ํ๊ธฐ
๊ฐ์์ Data Lab ๐
[๋ฉ์์ด์ฌ์์ฒ๋ผ ๋ฐ์ดํฐ๋ถ์ ๋ถํธ์บ ํ 5๊ธฐ] SQL ์กฐ์ธ, ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉํ๊ธฐ ๋ณธ๋ฌธ
[๋ฉ์์ด์ฌ์์ฒ๋ผ ๋ฐ์ดํฐ๋ถ์ ๋ถํธ์บ ํ 5๊ธฐ] SQL ์กฐ์ธ, ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉํ๊ธฐ
๊ฐ์์๋ 2025. 5. 2. 17:490. ํ์ต ๋ชฉํ
์กฐ์ธ์ ์๋ฒฝํ๊ฒ ์ดํดํ๊ณ ,
์๋ธ์ฟผ๋ฆฌ๋ฅผ ํผ์์ ์์ฑํด๋ณด๋ ๊ฒ์ด ์ค๋ ๋ณต์ต์ ๋ชฉํ์ด๋ค.
1. ์กฐ์ธ JOIN
sql ๋ณต์ตํ๊ธฐ 1ํธ์์๋ ํ๋์ ํ
์ด๋ธ์ ๋ํด์๋ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์๋ค.
๊ทผ๋ฐ ๋ง์ฝ ๋ ๊ฐ ์ด์ฌ์ ํ
์ด๋ธ์์ ํ ๋ฒ์ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
๋ฐ๋ก ์กฐ์ธ์ ์ฌ์ฉํ๋ฉด ํด๊ฒฐ๋๋ค !
but!! ์กฐ๊ฑด์ ๋ ํ
์ด๋ธ์ ๊ณตํต๋ ์ปฌ๋ผ์ด ์กด์ฌํด์ผํ๋ค.
Company DB ERD๋ฅผ ๋ค์ ๊ฐ์ ธ์๋ค.
employees์ dept_manager ํ
์ด๋ธ์ ๋ณด๋ฉด "emp_no" ๋ผ๋ ๊ณตํต๋ ์ปฌ๋ผ์ด ์กด์ฌํ๋ค.
๊ทธ๋ผ employees ์ dept_manager ํ
์ด๋ธ์ emp_no ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์กฐ์ธ์ด ๊ฐ๋ฅํ๋ค.
์์ 1) ๊ฐ ์ฌ์๋ค์ ์ฌ์๋ฒํธ, ๊ทผ๋ฌด ๋ถ์ ๋ฒํธ, ๊ทผ๋ฌด ๋ถ์ ์ด๋ฆ์ ๊ฐ์ ธ์จ๋ค. ์ฌ์๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ ์ฐจ์ ์ ๋ ฌํ๋ค.
์ปฌ๋ผ ์ด๋ฆ | ์กด์ฌํ๋ ํ ์ด๋ธ ์ด๋ฆ |
์ฌ์๋ฒํธ | dept_emp |
๊ทผ๋ฌด ๋ถ์๋ฒํธ | dept_emp, departments |
๊ทผ๋ฌด ๋ถ์ ์ด๋ฆ | departments |
๋ ํ ์ด๋ธ์ ๊ณตํต๋ ์ปฌ๋ผ์ ๊ทผ๋ฌด ๋ถ์๋ฒํธ dept_no ์ด๋ค. => dept_no ๊ธฐ์ค์ผ๋ก ๋ ํ ์ด๋ธ์ ์กฐ์ธํ์ !
select a1.emp_no, a1.dept_no, a2.dept_no, a2.dept_name
from dept_emp a1
join departments a2
on a1.dept_no = a2.dept_no
where a1.to_date = '9999-01-01'
order by a1.emp_no;
select ๊ฐ์ ธ์ฌ ์ปฌ๋ผ ์ด๋ฆ
from ์ปฌ๋ผ์ด ์๋ ํ
์ด๋ธ 1
join ํ
์ด๋ธ 2 on ๊ณตํต์ปฌ๋ผ1 = ๊ณตํต์ปฌ๋ผ2
where ์กฐ๊ฑด์
๐ญ ๋๋ ๊ฐ์ธ์ ์ผ๋ก from ํ ์ด๋ธ 1 ํ๊ณ ํ ์ค ๋์ฐ๊ณ join์ ์ ์ฐ๋ ๊ฒ์ ์ ํธํ๋ค.
Join ์ข ๋ฅ
INNER JOIN | ๋ ํ ์ด๋ธ ๋ชจ๋์ ์กด์ฌํ๋ ๊ณตํต๋ ๊ฐ๋ง ๋ฐํ |
LEFT JOIN (๋๋ LEFT OUTER JOIN) | ์ผ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๋ณด์ฌ์ฃผ๊ณ , ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ์ผ์นํ๋ ๊ฐ๋ง ํ์ |
RIGHT JOIN (๋๋ RIGHT OUTER JOIN) | ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๋ณด์ฌ์ฃผ๊ณ , ์ผ์ชฝ ํ ์ด๋ธ์ ์ผ์นํ๋ ๊ฐ๋ง ํ์ |
FULL OUTER JOIN | ์์ชฝ ํ ์ด๋ธ ๋ชจ๋์์ ์ผ์น ์ฌ๋ถ์ ์๊ด์์ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ |
์์ 2) ๊ฐ ์ฌ์๋ค์ ์ฌ์๋ฒํธ, first_name, ํ์ฌ ๋ฐ๊ณ ์๋ ๊ธ์ฌ์ก, from_date, to_date์ ๊ฐ์ ธ์จ๋ค.
์ด๋, ์ฌ์๋ฒํธ์ first_name์ employees ํ ์ด๋ธ์, ๋๋จธ์ง๋ salaries ํ ์ด๋ธ์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ right join์ด ์ ์ ํ๋ค.
select e.emp_no, e.first_name, s.salary, s.from_date, s.to_date
from employees as e
right join salaries as s on e.emp_no = s.emp_no
where s.to_date = '9999-01-01';
2. ์๋ธ์ฟผ๋ฆฌ
: ์ฟผ๋ฆฌ ์์ ์ฟผ๋ฆฌ๊ฐ ์๋ ํํ (like ๋งํธ๋ฃ์์นด ๐ช)
์์ 3) Development ๋ถ์์ ๊ทผ๋ฌดํ๊ณ ์๋ ์ฌ์๋ค์ ์ฌ์๋ฒํธ์ ๊ธ์ฌ๋ฅผ ๊ฐ์ ธ์จ๋ค.
SELECT emp_no, salary
FROM salaries
WHERE emp_no IN (
SELECT emp_no
FROM dept_emp
WHERE dept_no = (
SELECT dept_no
FROM departments
WHERE dept_name = 'Development'
)
);
์ ์ฝ๋๋ฅผ ๋ณด๋ฉด where์ ์ ์ฟผ๋ฆฌ๋ฌธ์ด ํ๋ ๋ ์๋ค.
์ผ๋จ ๊ฐ์ ธ์์ผํ๋ emp_no, salary๋ ๋ชจ๋ salaries ํ
์ด๋ธ์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์
select emp_no, salary
from salaries
where emp_no = 'development ๋ถ์์ ๊ทผ๋ฌด์ค์ธ ์ง์์ emp_no'
ํ์ฌ ๊ทผ๋ฌดํ๊ณ ์๋ ์ฌ๋์ด๋๊น to_date = '9999-01-01'์ด์ด์ผ ํ๊ณ ,
๊ฐ์ ธ์ฌ ์ฌ์๋ฒํธ๊ฐ development ๋ถ์์ ๊ทผ๋ฌด์ค์ธ ์ง์๋ค์ ์ฌ์๋ฒํธ์ด์ด์ผ ํ๋ค.
๊ทธ๋ผ development ๋ถ์์ ๊ทผ๋ฌด์ค์ธ ์ง์๋ค์ ์ฌ์๋ฒํธ๋ฅผ ๊ฐ์ ธ์ค๋ ์ฟผ๋ฆฌ๋ฅผ ์ง๋ณด์.
select emp_no
from dept_emp
where dept_no = 'development์ ๋ถ์๋ฒํธ'
๐คจ
์ด๋ผ๋ผ? ๋๋ development์ ๋ถ์๋ฒํธ๋ง ๊ฐ์ ธ์ค๋ฉด ๋์ธ๋ฐ ๋ถ์๋ฒํธ๊ฐ ๋ญ์ง ๋ชจ๋ฅธ๋ค....
๊ทธ๋ผ department ํ
์ด๋ธ์ ์ ๊ทผํด์ ํด๋น ๋ถ์๋ฒํธ๊ฐ ๋ญ์ง ๋ค๊ณ ์์ผ ํ๋๋ฐ.
์ค์ผ์ด ๋ถ์์ด๋ฆ์ด development์ธ dept_no๋ฅผ ๊ฐ์ ธ์ค๋ ์ฟผ๋ฆฌ๋ฅผ ์ง๋ณด์.
select dept_no
from department
where dept_name = 'Development'
์ด์ ๋ค ์์ฑ์ด ๋์๋ค. ์กฐ๊ฑด ์์ ์กฐ๊ฑด ์์ ์กฐ๊ฑด์ด ์๋ ๋๋์ด๋ค.
์ ์ฟผ๋ฆฌ๋ค์ ๋ค ํฉ์ณ๋ณด๋ฉด ?
์ฒ์์ ์ฟผ๋ฆฌ๋ฌธ๊ณผ ๊ฐ์์ง๋ ๊ฒ์ ํ์ธํ ์ ์๋ค !!
์ฒ์์๋ ์ฝ๋๊ฐ ๋ง ์์ผ์๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๋๋ผ๋. ํ๋์ฉ ํ์ด์ ๋ณด๋ฉด ์ ํ ์ด๋ ต์ง ์๋ค.
๐ญ ๋๋ ์
์๋ธ์ฟผ๋ฆฌ ํ๋ ๋ ํํ ์๊ฒฉ์ฆ ์ํ์ ์ณ์ ๋ชป๋ค์๊ฒ ์์ฝ๋ค.
๋ค๋ฅธ๊ฑฐ ๋ค ์์๋ ๋ฐ๋ฒ ์์
๋ค์ ๋๋ ์๋ธ์ฟผ๋ฆฌ๊ฐ ์ ์ผ ์ด๋ ค์์
์ด๋ฒ ๊ธฐํ์ ๋ค์ ๋ฃ๊ณ ์ถ์๋๋ฐ,,
๊ทธ๋๋ ํผ์์ ์ฝ๋ ํ์ด์ ํ์ธํ๋๊น ์ดํด๊ฐ ์์ฃผ ์๋๋ค.
๋์ค์ ์๊ฐ์ด ๋๋ฉด University DB๋ก ํผ์ ์ฐ์ตํด๋ด์ผ๊ฒ ๋ค !

์ถ์ฒ : ๋ฉ์์ด์ฌ์์ฒ๋ผ