์ค๋ผํด๋ก ๋ฐฐ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ก ๊ณผ ์ค์ต(2ํ) ์ ๊ณต๋ถํ๋ฉฐ, ์ ๋ฆฌํ ๋ด์ฉ์ ํฌ์คํ ํ๋ ๊ธ์ ๋๋ค.
๊ด๊ณ๋์ (relational algebra)
๋ฆด๋ ์ด์ ์์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ์ํ์ ๋์์ ๊ฐ์ ์ฐ์ฐ์ ์ด์ฉํ์ฌ ์ง์ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ์ ํ๋ ์ธ์ด
๊ด๊ณ๋์์ ๊ด๊ณํด์
- ๊ด๊ณ๋์ : ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฐพ๋์ง์ ๋ํ ์ฒ๋ฆฌ ์ ์ฐจ๋ฅผ ๋ช ์ํ๋ ์ ์ฐจ์ ์ธ ์ธ์ด์ด๋ฉฐ, DBMS ๋ด๋ถ์ ์ฒ๋ฆฌ ์ธ์ด๋ก ์ฌ์ฉ๋จ
- ๊ด๊ณํด์: ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋์ง ๋ช ์ํ๋ ์ ์ธ์ ์ธ ์ธ์ด๋ก ๊ด๊ณ๋์์ ํจ๊ป ๊ด๊ณ DBMS์ ํ์ค ์ธ์ด์ธ SQL์ ์ด๋ก ์ ์ธ ๊ธฐ๋ฐ์ ์ ๊ณตํจ
๊ด๊ณ๋์์ ๊ด๊ณํด์์ ๋ชจ๋ ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ค์ํ ์ธ์ด์ด๋ฉฐ ์ค์ ๋์ผํ ํํ ๋ฅ๋ ฅ์ ๊ฐ์ง๊ณ ์๋ค.
์ ๋ ์ (selection)
- ๋ฆด๋ ์ด์ ์ ํํ์ ์ถ์ถํ๊ธฐ ์ํ ์ฐ์ฐ์.
- ๋จํญ ์ฐ์ฐ์
- ํ์ : ์๊ทธ๋ง<์กฐ๊ฑด> (R)
- ๋ณตํฉ์กฐ๊ฑด : ์กฐ๊ฑด์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ^(and), v(or), ใฑ(not) ๊ธฐํธ๋ฅผ ์ด์ฉํ์ฌ ๋ณตํฉ์กฐ๊ฑด์ ํ์.
ํ๋ก์ ์ (projection)
- ๋ฆด๋ ์ด์ ์ ์์ฑ์ ์ถ์ถํ๊ธฐ ์ํ ์ฐ์ฐ
- ๋จํญ ์ฐ์ฐ์
- ํ์ : ํ์ด<๋ฝ์๋ผ ์์ฑ๋ค> (R)
ํฉ์งํฉ
- ๋ ๊ฐ์ ๋ฆด๋ ์ด์ ์ ํฉํ์ฌ ํ๋์ ๋ฆด๋ ์ด์ ์ ๋ฐํ (์ค๋ณต๋ ๋ถ๋ถ ์ ๊ฑฐ)
- ์กฐ๊ฑด : ๋ ๊ฐ์ ๋ฆด๋ ์ด์ ์ ์๋ก ๊ฐ์ ์์ฑ ์์์ ๋๋ฉ์ธ์ ๊ฐ์ ธ์ผ ํจ.
๊ต์งํฉ
- ํฉ๋ณ๊ฐ๋ฅํ ๋ ๋ฆด๋ ์ด์ ์ ๋์์ผ๋ก ํ๋ฉฐ
- ๋ ๋ฆด๋ ์ด์ ์ด ๊ณตํต์ผ๋ก ๊ฐ์ง๊ณ ์๋ ํํ์ ๋ฐํ
์ฐจ์งํฉ
- ์ฒซ ๋ฒ์งธ ๋ฆด๋ ์ด์ ์๋ ์ํ๊ณ ๋ ๋ฒ์งธ ๋ฆด๋ ์ด์ ์๋ ์ํ์ง ์๋ ํํ์ ๋ฐํ
์นด๋์ ํ๋ก๋ํธ(cartesian product)
- ๋ ๋ฆด๋ ์ด์ ์ ์ฐ๊ฒฐ์์ผ ํ๋๋ก ํฉ์น ๋ ์ฌ์ฉ
- ๊ฒฐ๊ณผ ๋ฆด๋ ์ด์ : ์ฒซ ๋ฒ์งธ ๋ฆด๋ ์ด์ ์ ์ค๋ฅธ์ชฝ์ ๋ ๋ฒ์งธ ๋ฆด๋ ์ด์ ์ ๋ชจ๋ ํํ์ ์์๋๋ก ๋ฐฐ์ดํ์ฌ ๋ฐํ.
- ๊ฒฐ๊ณผ ๋ฆด๋ ์ด์ ์ฐจ์: ๋ ๋ฆด๋ ์ด์ ์ ์ฐจ์์ ํฉ
- ๊ฒฐ๊ณผ ๋ฆด๋ ์ด์ ์นด๋๋๋ฆฌํฐ: ๋ ๋ฆด๋ ์ด์ ์ ์นด๋๋๋ฆฌํฐ์ ๊ณฑ
์กฐ์ธ(join)
- ๋ ๋ฆด๋ ์ด์ ์ ๊ณตํต ์์ฑ์ ๊ธฐ์ค์ผ๋ก ์์ฑ ๊ฐ์ด ๊ฐ์ ํํ์ ์ํ์ผ๋ก ๊ฒฐํฉํ๋ ์ฐ์ฐ
- ๋ ๋ฆด๋ ์ด์ ์ ์นด๋์ ํ๋ก๋ํธ ์ฐ์ฐ์ ํ ํ ์ ๋ ์ ์ฐ์ฐ์ ํ ๊ฒ๊ณผ ๋์ผ
- ์กฐ์ธ ์ฐ์ฐ ์ข
๋ฅ
- ๊ธฐ๋ณธ์ฐ์ฐ
- ์ธํ์กฐ์ธ : ์กฐ๊ฑด(=, > , < .. ๋ฑ)์ ๋ง๋ ํํ ๋ฐํ
- ๋๋ฑ์กฐ์ธ : ์์ฑ๊ฐ์ด ๊ฐ์ ํํ๋ง ๋ฐํ
- ์์ฐ์กฐ์ธ : ๋๋ฑ์กฐ์ธ์์ ์ค๋ณต ์ ๊ฑฐ
- ํ์ฅ๋ ์กฐ์ธ ์ฐ์ฐ
- ์ธ๋ฏธ์กฐ์ธ:๋ซํ ์๋ ๋ฆด๋ ์ด์
์ ํํ๋ง ๋ฐํ(์ค๋ณต ์ ๊ฑฐ)
- left semi join
- right semi join
- ์ธ๋ถ์กฐ์ธ : ์์ฐ์กฐ์ธ ์ ์๋ฒํ ํํ๋ค์ ๋ชจ๋ ๋ณด์ฌ์ฃผ๋ฉฐ ๊ฐ์ด ์๋ ์์ฑ์๋ NULL์ ์ฑ์์ ๋ณด์ฌ์ค๋ค.
- left outer join
- full outer join
- right outer join
- ์ธ๋ฏธ์กฐ์ธ:๋ซํ ์๋ ๋ฆด๋ ์ด์
์ ํํ๋ง ๋ฐํ(์ค๋ณต ์ ๊ฑฐ)
- ๊ธฐ๋ณธ์ฐ์ฐ
1) ์ธํ ์กฐ์ธ
- ์กฐ๊ฑด(=, <=, >=, < , > , =/=)์ ๋ง๋ ํํ์ ๋ฐํํ๋ค.
2) ๋๋ฑ ์กฐ์ธ
- ์ธํ ์กฐ์ธ์์ = ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์กฐ์ธ.
- ๋ณดํต ์กฐ์ธ ์ฐ์ฐ์ด๋ผ๊ณ ํ๋ฉด ๋๋ฑ์กฐ์ธ์ ์ง์นญํ๋ค.
๋ฌธ์ ํ) ๊ณ ๊ฐ๊ณผ ๊ณ ๊ฐ์ ์ฃผ๋ฌธ์ฌํญ์ ๋ชจ๋ ๋ณด์ด์์ค.
- (๋ชจ๋ ๋ณด์ด์์ค -> ๋๋ฑ์กฐ์ธ, ์์ฐ์กฐ์ธ๊ณผ ๊ตฌ๋ณ๋ฒ์ ์๋ ์์ฐ์กฐ์ธ ์ฐธ๊ณ )
์ธํ ์กฐ์ธ๊ณผ ๋๋ฑ ์กฐ์ธ์ ์ค๋ณต๋ ์์ฑ ์ด ๋ฐ์!!
3) ์์ฐ ์กฐ์ธ(natural join)
- ๋๋ฑ์กฐ์ธ์์ ๋ ๋ฒ์งธ ๋ฆด๋ ์ด์ ์ ์์ฑ(์ฌ๊ธฐ์ ์ฃผ๋ฌธ.๊ณ ๊ฐ๋ฒํธ๊ฐ ๋๊ฒ ๋ค )์ด ์ค๋ณต๋์ ๋์ค์ง ์๋๋ก ํ๋ค.
๋ฌธ์ ํ) ๊ณ ๊ฐ๊ณผ ๊ณ ๊ฐ์ ์ฃผ๋ฌธ์ฌํญ์ ๋ชจ๋ ๋ณด์ฌ์ฃผ๋ ๊ฐ์ ์์ฑ์ ํ๋ฒ๋ง ํ์ํ์์ค.
- (๋ชจ๋ ๋ณด์ฌ์ฃผ๋ -> ๋๋ฑ์กฐ์ธ, ๊ฐ์ ์์ฑ์ ํ๋ฒ๋ง ํ์ -> ์์ฐ ์กฐ์ธ)
4) ์ธ๋ถ ์กฐ์ธ(outer join)
- left outer join
- full outer join
- right outer join
์์ฐ์กฐ์ธ ์ ์กฐ์ธ์ ์คํจํ ํํ๋ค์ ์๋ ์์ฑ์ null๊ฐ์ ์ฑ์์ ๋ชจ๋ ๋ณด์ฌ์ค๋ค.
์ธ๋ถ์กฐ์ธ์ด ๊ฐ๋ฆฌํค๋ ์ชฝ(์ผ์ชฝ, ์ค๋ฅธ์ชฝ, ์ ์ฒด)์ ๋ฐ๋ผ ํด๋น ๋ฆด๋ ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์จ๋ค.
์ธ๋ถ์กฐ์ธ ์์ ๋ฌธ์ ๋ฆด๋ ์ด์
๋ฌธ์ 1) ๊ณ ๊ฐ ๊ธฐ์ค์ผ๋ก ์ฃผ๋ฌธ ๋ด์ญ์ด ์๋ ๊ณ ๊ฐ๋ ๋ชจ๋ ๋ณด์ด์์ค.
- ๊ณ ๊ฐ ๊ธฐ์ค -> Left Outer Join , ์๋ ๊ณ ๊ฐ๋ ๋ชจ๋ -> Outer join์ ์๋ฏธ!
- (์ค๋ณต๋ ์์ฑ ์ ๊ฑฐ) ๊ณ ๊ฐ ๋ฆด๋ ์ด์ ์ ๊ณ ๊ฐ๋ฒํธ๋ง ์ ์ง! ์ฃผ๋ฌธ ๋ฆด๋ ์ด์ ๊ณ ๊ฐ๋ฒํธ ์ ๊ฑฐ!
๋ฌธ์ 2) ์ฃผ๋ฌธ ๋ด์ญ์ด ์๋ ๊ณ ๊ฐ๊ณผ ๊ณ ๊ฐ ๋ฆด๋ ์ด์ ์ ๊ณ ๊ฐ๋ฒํธ๊ฐ ์๋ ์ฃผ๋ฌธ์ ๋ชจ๋ ๋ณด์ด์์ค.
- ๊ธฐ์ค์ ๋ช ์ํ์ง ์์๊ณ , ๋ ๋ฆด๋ ์ด์ ์์ ์๋ ํํ์ ๋ชจ๋ ๋ณด์ด๋ผ๊ณ ํ์๊ธฐ ๋๋ฌธ์ -> Full Outer join
- Full Outer Join ์ธ ๊ฒฝ์ฐ์๋ ์ธ๋ํค๋ง ์ ๊ฑฐ! (์ฌ๊ธฐ์๋, ๊ณ ๊ฐ ๋ฆด๋ ์ด์ ์ ๊ณ ๊ฐ๋ฒํธ๋ง ์ ์ง, ์ฃผ๋ฌธ ๋ฆด๋ ์ด์ ๊ณ ๊ฐ๋ฒํธ ์ ๊ฑฐ)
๋ฌธ์ 3) ์ฃผ๋ฌธ ๋ด์ญ ๊ธฐ์ค์ผ๋ก ๊ณ ๊ฐ ๋ฆด๋ ์ด์ ์ ๊ณ ๊ฐ๋ฒํธ๊ฐ ์๋ ์ฃผ๋ฌธ๋ ๋ชจ๋ ๋ณด์ด์์ค
- ์ฃผ๋ฌธ ๋ด์ญ ๊ธฐ์ค -> ๊ณ ๊ฐ ๋ฆด๋ ์ด์ ์ ๊ณ ๊ฐ๋ฒํธ๋ ์ ๊ฑฐ! ์ฃผ๋ฌธ ๋ฆด๋ ์ด์ ์ชฝ์ ์ ์ง! (์ค๋ณต๋ ์์ฑ ์ ๊ฑฐ)
- ๊ณ ๊ฐ๋ฒํธ๊ฐ ์๋ ์ฃผ๋ฌธ๋ ๋ชจ๋ ๋ณด์ด๋ผ๊ณ ํ์์ผ๋ฏ๋ก -> Right Outer join!
5) ์ธ๋ฏธ ์กฐ์ธ(semi join)
์์ฐ ์กฐ์ธ์ ํ ํ ๋ ๋ฆด๋ ์ด์ ์ค ํ ์ชฝ ๋ฆด๋ ์ด์ ์ ๊ฒฐ๊ณผ๋ง ๋ฐํํ๋ฉฐ, ๊ธฐํธ์์ ๋ซํ ์ชฝ ๋ฆด๋ ์ด์ ์ ํํ๋ง ๋ฐํ
๋ฌธ์ ) ๋ง๋น์์ ์ ๊ณ ๊ฐ ์ค ์ฃผ๋ฌธ๋ด์ญ์ด ์๋ ๊ณ ๊ฐ์ ๊ณ ๊ฐ์ ๋ณด๋ฅผ ๋ณด์ด์์ค.
- ์ฃผ๋ฌธ๋ด์ญ์ด ์๋ -> ์ธ๋ฏธ ์กฐ์ธ
- ๊ณ ๊ฐ์ ๊ณ ๊ฐ์ ๋ณด๋ฅผ ๋ณด์ฌ๋ผ -> ๊ณ ๊ฐ ๋ฆด๋ ์ด์ ์ชฝ์ ๋ซํ๊ณ , ์ฃผ๋ฌธ ๋ฆด๋ ์ด์ ์ชฝ์ ์ด๋ ค์๋ ์ธ๋ฏธ์กฐ์ธ
6) ๋๋น์ (division)
- ๋ฆด๋ ์ด์ ์ ์์ฑ ๊ฐ์ ์งํฉ์ผ๋ก ์ฐ์ฐ์ ์ํ