ํ ์ด๋ธ ์ธ์คํด์ค๋ ๋ ์ฝ๋๋ค์ ์งํฉ ์ด๋ฏ๋ก
์ฐจ์ (degree) : ํ ์ด๋ธ ์คํค๋ง์ ์ ์๋ ํ๋์ ์
๋๋ฉ์ธ : ๊ฐ ํ๋์ ์ ๋ ฅ ๊ฐ๋ฅํ ๊ฐ๋ค์ ๋ฒ์, ์ฆ ๊ฐ ํ๋๊ฐ ๊ฐ์ง ์ ์๋ ๋ชจ๋ ๊ฐ๋ค์ ์งํฉ
๊ธฐ์ (cardinality) : ๋ ์ฝ๋ ์
๋ชจ๋ ํ๋๋ ๋ ์ด์ ๋ถ๋ฆฌ๋์ง ์๋ ๊ฐ, ์ฆ ์์๊ฐ (atomic value) ์ ๊ฐ์ง๋ค.
2๊ฐ ์ด์์ ํ๋๋ก ๊ตฌ์ฑ๋ ํค๋ฅผ ๋ณตํฉํค๋ผ ํ๋ค.
์ธ๋ํค : ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ฅผ ์ฐธ์กฐํ๋ ํ๋์งํฉ
โ๏ธ ์ ์ฐจ์ ์ธ์ด
โ๏ธ ์ํ์์์ ์์๊ตฌ์กฐ์ ์ ์ฌ
โ๏ธ ๊ธฐ๋ณธ ์ฐ์ฐ
โ๏ธ ์ถ๊ฐ์ฐ์ฐ
์กฐ์ธ (theta join)
์์ฐ ์กฐ์ธ (natural join)
์ธ๋ถ ์กฐ์ธ (outer join)
์ง์ ์ฐ์ฐ (assignment)
(๋๋๊ธฐ ์ฐ์ฐ)
๐ก Structed Query Language
- ๊ด๊ณํ ์ง์์ธ์ด
- ๊ด๊ณ๋์๋ ๊ด๊ณํด์์ ํ์คํ ์ด๋ก ์ ๋ฐฐ๊ฒฝ์ ์ ๊ณตํ๋ ์์ฉ์ผ๋ก ์ฐ์ด๊ธฐ์๋ ์ด๋ ต๊ณ ์ ์ ์น ์์
- SQL์ ์์ฐ์ด์ ์ ์ฌํ๊ณ ๋น์ ์ฐจ์ ์ธ์ด์ด๋ฏ๋ก ์ฌ์ฉํ๊ธฐ ์ฉ์ดํจ
โ๏ธ SQL์ ํฌ๊ฒ DDL๊ณผ DML๋ก ๊ตฌ์ฑ๋จ
โ๏ธ ๋ฐ์ดํฐ ์ ์ ์ธ์ด DDL
โ๏ธ ํ๋์ Data type ์ข ๋ฅ
โ๏ธ ๋ฐ์ดํฐ ์กฐ์ ์ธ์ด DML
โ๏ธ ํ
์ด๋ธ ์์ฑ, ๊ธฐ๋ณธํค, ์ธ๋ํค ์ค์
์ค์ ํ ์ด๋ธ ์ด๋ฆ์ด ์์ ๋๊ฑฐ๋ ํ๋ ์ด๋ฆ์ด ๋ฐ๋๋ ๊ฒ์ด ์๋!
์ง์๋ฅผ ์ฒ๋ฆฌํ๋ ๊ณผ์ ๋์๋ง ์ผ์์ ์ผ๋ก ์ฌ์ฉ.
ํํ์ด ๋จ์ํํ๊ฑฐ๋, ๋์ผ ์ด๋ฆ์ด ์กด์ฌํ ๊ฒฝ์ฐ์ ์ฌ์ฉ
๋ฌธ์์ด์ ๋ํด์๋ ์ผ๋ถ๋ถ๋ง ์ผ์นํ๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์์ผ ํ ๋ ์ฌ์ฉ.
<ํ๋์ด๋ฆ>์ ์ง์ ๋ <๋ฌธ์์ดํจํด>์ด ๋ค์ด ์๋์ง๋ฅผ ํ๋จ.
where <ํ๋์ด๋ฆ> like <๋ฌธ์์ดํจํด>
= ์ฐ์ฐ์ ๋์ ์ like ์ฐ์ฐ์๋ฅผ ์ด์ฉํจ (= ๋ ์ ํํ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ)
๋ฌธ์์ด ํจํด์ ์ข ๋ฅ
ex) student ํ ์ด๋ธ์์ ์ฌํ์๋ค๋ง์ ๊ฒ์
๊ด๊ณ๋์์ ์งํฉ ์ฐ์ฐ์ธ ํฉ์งํฉ, ๊ต์งํฉ, ์ฐจ์งํฉ์ ํด๋นํ๋ ์ฐ์ฐ์
ํฉ์งํฉ union
๊ต์งํฉ intersect
์ฐจ์งํฉ minus
๐ญ โ์ด์ฐ์ํโ, โ๊ฐ์ฒด์งํฅ์ธ์ดโ ๊ต๊ณผ๋ชฉ๋ค์ class ํ ์ด๋ธ์ ์ ์ฅ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ๊ฒ์ ๊ฒฐ๊ณผ์ ํฌํจ๋์ง ๋ชปํ๋ค. ์ด๋ด ๋ ์๋์ ์กฐ์ธ์ ํด์ฃผ๋ฉด ๊ฐ๊ฐ ์ด๋ค ๊ฒฐ๊ณผ๋ค์ด ๋์ฌ๊น?
ํต๊ณ์ฐ์ฐ ๊ธฐ๋ฅ ์ ๊ณต.
SELECT ์ ๊ณผ HAVING ์ (๋ค์ ์ค๋ช ) ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ.
sum, avg๋ ์ซ์ํ ํ ์ดํฐ ํ์ ์ ๊ฐ๋ ํ๋์๋ง ์ ์ฉ๊ฐ๋ฅ.
count : ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
ex) student ํ ์ด๋ธ์์ 3ํ๋ ํ์์ด ๋ช ๋ช ์ธ์ง ์ถ๋ ฅ
ex) student ํ ์ด๋ธ์์ dept_id ํ๋์ ๊ฐ์ด ๋ช ๊ฐ์ธ์ง๋ฅผ ์ถ๋ ฅ
distinct ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ณต๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ ๊ฐ์๋ฅผ ๋ฆฌํด
์ปดํจํฐ๊ณตํ๊ณผ์ ํ์ ์๋ฅผ ์ถ๋ ฅ
sum : ๋ฐ์ดํฐ์ ํฉ์ ๊ตฌํ๋ค.
avg : ๋ฐ์ดํฐ์ ํ๊ท ๊ฐ์ ๊ตฌํ๋ค.
max : ๋ฐ์ดํฐ์ ์ต๋ ๊ฐ์ ๊ตฌํ๋ค.
min : ๋ฐ์ดํฐ์ ์ต์ ๊ฐ์ ๊ตฌํ๋ค.
โ๏ธ select ์ ์ ์ง๊ณ ํจ์๊ฐ ์ฌ์ฉ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ๋๋ select ์ ์ ์ฌ์ฉํ ์๊ฐ ์์.
์ง๊ธ๊น์ง์ SQL์ ์ ์ฒด ๋ ์ฝ๋๋ค์ ๋์์ผ๋ก ํ๊ท , ํฉ, ์ต๋๊ฐ/์ต์๊ฐ ๋ง์ ์ถ๋ ฅ.
GROUP BY๋ฅผ ์ด์ฉํ๋ฉด ๊ทธ๋ฃน๋ณ๋ก ์ง๊ณํจ์ ์ ์ฉ ๊ฐ๋ฅ! (์: ํ๊ณผ๋ณํ์์,๋ถ์๋ณ์ต๋๊ธโ)
๊ทธ๋ฃน์ ๋ํ ์กฐ๊ฑด์ ๋ช ์ํ ๋ ์ฌ์ฉ
ex) ํ๊ท ์ฌ์ง์ฐ์๊ฐ 10๋ ์ด์์ธ ํ๊ณผ์ ๋ํด์๋ง ๊ต์ ์ซ์์ ํ๊ท ์ฌ์ง์ฐ์, ์ต๋ ์ฌ์ง์ฐ์๋ฅผ ์ถ๋ ฅ
๋ค์์ ์ค๋ฅ โ๏ธ
โ๏ธ Group ์ ๋ํ ์กฐ๊ฑด์ where ์ ์ ์ฌ์ฉํ์ง ๋ชปํจ.
having ์ ์ ์ด์ฉํด์ผ ํจ
ex) having ์ ์ ์ด์ฉํ์ฌ ๋ค์ ์์ฑ
ex) ์ง์ ์ซ์๊ฐ 5๋ช ์ด์์ธ ๋ถ์์ ๋ํด์ ๋ถ์๋ณ ์ง์์, ํ๊ท ๊ธ์ฌ, ์ต๋๊ธ์ฌ, ์ต์๊ธ์ฌ๋ฅผ ์ถ๋ ฅ
๐ก where ์ ๊ณผ having ์ , group by ์ ์ ๋ชจ๋ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ
1. where ์ ์ ๋ช ์๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ ์ฝ๋๋ค์ ๊ฒ์
2. group by ์ ์ ๋ช ์๋ ํ๋์ ๊ฐ์ด ์๋ก ์ผ์นํ๋ ๋ ์ฝ๋๋ค ๋ผ๋ฆฌ ๊ทธ๋ฃน์ ์ง์ด ์ง๊ณ ํจ์๋ฅผ ์ ์ฉ
3. ๋ง์ง๋ง์ผ๋ก ๊ทธ ์ง๊ณ ํจ์๋ฅผ ์ ์ฉํ ๊ฒฐ๊ณผ๋ค ์ค์์ having ์ ์ ๋ง์กฑํ๋ ๊ฒฐ๊ณผ๋ง ๊ณจ๋ผ์ ์ถ๋ ฅ
๋์ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ
- <ํ๋์ด๋ฆ> is null
- <ํ๋์ด๋ฆ> is not null
ex) takes ํ ์ด๋ธ์์ ์์ง ํ์ ์ด ๋ถ์ฌ๋์ง ์์ ํ์์ ํ๋ฒ์ ๊ฒ์
ex) takes ํ ์ด๋ธ์์ ํ์ ์ด 'A+'๊ฐ ์๋ ํ์๋ค์ ํ๋ฒ์ ๊ฒ์
SQL๋ฌธ์ ๋ค๋ฅธ SQL๋ฌธ ์์ ์ค์ฒฉํ์ฌ ์ฌ์ฉํ๋ ์ง์
๋ถ์ง์๋ ์ธ๋ถ์ง์์ from ์ ์ด๋ where ์ ์ ์์น
ex) '301ํธ' ๊ฐ์์ค์์ ๊ฐ์ค๋ ๊ฐ์ข์ ๊ณผ๋ชฉ๋ช ์ ์ถ๋ ฅ
์ ์ง์๋ ์๋ ์ง์์ ์๋ฏธ๊ฐ ๊ฐ๋ค.
๋ถ ์ง์ : ํค์๋ in ๋ค์ ๋์ค๋ SQL๋ฌธ์ผ๋ก์ class ํ
์ด๋ธ์์ ๊ฐ์์ค์ด '301ํธ'์ธ ๊ต๊ณผ๋ชฉ ๋ฒํธ๋ฅผ
๊ฒ์
์ธ๋ถ ์ง์ : course ํ ์ด๋ธ์์ course_id ํ๋์ ๊ฐ์ด ๋ถ ์ง์์ ๊ฒ์ ๊ฒฐ๊ณผ์ ํฌํจ๋๋ ๊ฒฝ์ฐ(in)์๋ง ๊ณผ๋ชฉ๋ช ์ ์ถ๋ ฅ
ex) 2012๋ 2ํ๊ธฐ์ ๊ฐ์ค๋์ง ์์ ๊ณผ๋ชฉ๋ช ์ ๊ฒ์
some= : ์ง์ ๋ ํ๋์ ๊ฐ์ด ๋ถ์ง์ ๊ฒ์๊ฒฐ๊ณผ์ ์กด์ฌํ๋ ์์์ ๊ฐ๊ณผ ๊ฐ์์ง๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉ (in ๊ณผ ๊ฐ์ ์๋ฏธ)
<=some : ๋ถ์ง์์ ๊ฒ์๊ฒฐ๊ณผ์ ์กด์ฌํ๋ ์์์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ง๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉ
=all : ์ง์ ๋ ํ๋์ ๊ฐ์ด ๋ถ์ง์ ๊ฒ์๊ฒฐ๊ณผ์ ํฌํจ๋ ๋ชจ๋ ๊ฐ๊ณผ ๊ฐ์์ง๋ฅผ ํ๋จ
<=all : ์ง์ ๋ ํ๋์ ๊ฐ์ด ๋ถ์ง์ ๊ฒ์๊ฒฐ๊ณผ์ ํฌํจ๋ ๋ชจ๋ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ง๋ฅผ ํ๋จ
ex) ๊ฐ์ฅ ๋ง์ ์๊ฐ์ธ์์ ๊ฐ์ง ๊ฐ์ข๋ฅผ ๊ฒ์
๋ถ์ง์ ๊ฒ์๊ฒฐ๊ณผ์ ์ต์ํ ํ๋ ์ด์์ ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋์ง์ ์ฌ๋ถ๋ฅผ ํํ
exits : ์ต์ํ ํ๊ฐ์ ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋ฉด ์ฐธ์ด ๋๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฑฐ์ง
not exits : ๋ถ์ง์์ ๊ฒฐ๊ณผ์ ๋ ์ฝ๋๊ฐ ํ๋๋ ์์ผ๋ฉด ์ฐธ์ด ๋๊ณ ํ๋๋ผ๋ ์กด์ฌํ๋ฉด ๊ฑฐ์ง
ex) '301ํธ' ๊ฐ์์ค์์ ๊ฐ์ค๋ ๊ฐ์ข์ ๊ณผ๋ชฉ๋ช ์ ์ถ๋ ฅ
ex) 2012๋ 2ํ๊ธฐ์ ๊ฐ์ค๋์ง ์์ ๊ณผ๋ชฉ๋ช ์ ๊ฒ์
๊ธฐ์กด ํ ์ด๋ธ๋ค๋ก๋ถํฐ ์์ฑ๋๋ ๊ฐ์์ ํ ์ด๋ธ
ํ ์ด๋ธ์ฒ๋ผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์ฑ๋๋ ๊ฒ์ด ์๋๋ผ, ๊ธฐ์กด์ ํ ์ด๋ธ๋ค์ ์กฐํฉํ์ฌ ์ฌ์ฉ์์๊ฒ ์ค์ ๋ก ์กด์ฌํ๋ ํ ์ด๋ธ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํจ
๐ก ํน์ ์ฌ์ฉ์์๊ฒ ํ ์ด๋ธ์ ๋ด์ฉ ์ค ์ผ๋ถ๋ฅผ ์จ๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณด์์ ํจ๊ณผ
๐ก ๋ณต์กํ ์ง์์ ๊ฒฐ๊ณผ๋ฅผ ๋ทฐ๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ง์๋ฅผ ๊ฐ๋จํ ํํํ ์ ์์
โ๏ธ ๋ทฐ ์์ฑ
์์ฑ๋ ๋ทฐ๋ ํ ์ด๋ธ๊ณผ ๋๋ฑํ๊ฒ ์ฌ์ฉ
create or replace view <๋ทฐ์ด๋ฆ> as <select๋ฌธ>
or replace ํค์๋๋ฅผ ์ถ๊ฐํ๋ฉด <๋ทฐ์ด๋ฆ>๊ณผ ๊ฐ์ ๋ทฐ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ ๊ธฐ์กด์ ๋ทฐ๋ฅผ ์ง์ฐ๊ณ ์๋ก ์์ฑ
๋ทฐ ์์ฑ์ ์ฌ์ฉ๋ select๋ฌธ
๋๋ถ๋ถ์ DBMS ์์๋ ์ฌ์ฉ์ ๊ณ์ ์๋ ๋ทฐ ์์ฑ ๊ถํ์ด ๋ถ์ฌ๋์ง ์์
ex) takes ํ ์ด๋ธ์์ grade ํ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ํ๋๋ง์ผ๋ก ๊ตฌ์ฑ๋ ๋ทฐ ๋ฅผ ์์ฑ
ex) student ํ ์ด๋ธ์์ ์ปดํจํฐ๊ณตํ๊ณผ ํ์๋ค ๋ ์ฝ๋๋ง ์ถ์ถํ์ฌ cs_student ๋ทฐ๋ฅผ ์์ฑ
โ๏ธ ๋ทฐ ์ฌ์ฉ
ex) v_takes ๋ทฐ์ ๋ํด select๋ฌธ์ ์คํ
ex) ๋ทฐ์ ๋ํด์ insert, update, delete๋ฌธ์ ์คํ
์ฝ๊ธฐ ์ ์ฉ ๋ทฐ
โ๏ธ ๋ทฐ ์ญ์
<๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ดํด> (์ถํ:์ดํ๋ฏธ๋์ด) ์ ๋ด์ฉ์ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค.
์๋ชป๋ ๋ด์ฉ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค ๐