๐
๋ค์ด๊ฐ๊ธฐ ์ ์๐
SQL(Structured Query Language)์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
(RDBMS)์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ํน์ ๋ชฉ์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์
๋๋ค. SQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์์ฑ ๋ฐ ์์ , ๋ฐ์ดํฐ ์
๋ ฅ ๋ฐ ์์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์ ๊ทผ ์ ์ด ๋ฑ์ ์ํ ๋ช
๋ น์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฝ๊ฒ ๋งํด
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์กฐ์ํ๊ธฐ ์ํ ์ธ์ด
๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฒ์ ์์ฃผ ์ฌ์ฉ๋๋ SQL ๋ฌธ๋ฒ์ ์ด์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
โ
DB ๋ฐ ํ
์ด๋ธ ๊ตฌ์ฑ ์์๐
๋ค์ด๊ฐ๊ธฐ ์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ํ
์ด๋ธ์ ๊ตฌ์ฑ ์์์ ๋ํด ๊ฐ๋จํ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค(Database, DB)๋ ์ฌ๋ฌ ๊ฐ์ ํ
์ด๋ธ(Table)๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๊ฐ ํ
์ด๋ธ์ ํ(Row)๊ณผ ์ด(Column)๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํ
์ด๋ธ์ ๊ตฌ์ฑํ๋ ์์๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ
์ด๋ธ(Table)
: ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ธฐ๋ณธ ๋จ์
์ปฌ๋ผ(Column)
: ํ
์ด๋ธ์์ ๊ฐ ๋ฐ์ดํฐ์ ์์ฑ(์: ์ด๋ฆ, ๋์ด, ์ด๋ฉ์ผ)
ํ(Row, Record)
: ํ ๊ฐ์ ๋ฐ์ดํฐ ๋จ์(์: 'ํ๊ธธ๋', 25, 'hong@example.comโ')
๊ธฐ๋ณธ ํค(Primary Key, PK)
: ํ
์ด๋ธ์์ ๊ฐ ํ์ ์ ์ผํ๊ฒ ์๋ณํ๋ ๊ฐ
์ธ๋ ํค(Foreign Key, FK)
: ๋ค๋ฅธ ํ
์ด๋ธ๊ณผ ๊ด๊ณ๋ฅผ ๋งบ์ ๋ ์ฌ์ฉํ๋ ํค
๐
SELECT / FROM / WHERE๐
SELECT
๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ช
๋ น์ด์
๋๋ค.
name | age |
---|
ํ๊ธธ๋ | 25 |
---|
์ด๋ํ | 27 |
---|
ํ๋์ด | 14 |
---|
ํ๊ธธ์ | 25 |
---|
WHERE
์ ์ ์ฌ์ฉํ๋ฉด ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
name |
---|
ํ๊ธธ๋ |
---|
์ด๋ํ |
---|
ํ๊ธธ์ |
---|
๐
GROUP BY / HAVING / ORDER BY๐
๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๊ฑฐ๋ ์ ๋ ฌํ ๋ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์
๋๋ค.
ํน์ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ ๋ ์ฌ์ฉํฉ๋๋ค.
GROUP BY๋ก ๊ทธ๋ฃนํํ ๋ฐ์ดํฐ์์ ํน์ ์กฐ๊ฑด์ ๊ฑธ ๋ ์ฌ์ฉํฉ๋๋ค.
WHERE
: GROUP BY ์ ์ ์กฐ๊ฑด์ ์ ์ฉ (๊ฐ๋ณ ํ ํํฐ๋ง)
HAVING
: GROUP BY ํ ๊ฒฐ๊ณผ ๊ทธ๋ฃน์ ์กฐ๊ฑด ์ ์ฉ (๊ทธ๋ฃน ํํฐ๋ง)
์กฐํํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
name | age |
---|
์ด๋ํ | 27 |
---|
ํ๊ธธ๋ | 25 |
---|
ํ๊ธธ์ | 25 |
---|
ํ๋์ด | 14 |
---|
๐
JOIN / INNER JOIN / OUTER JOIN๐
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ๋ฌ ๊ฐ์ ํ
์ด๋ธ์ ํฉ์ณ์ ์กฐํํ ๋ ์ฌ์ฉํฉ๋๋ค.
Orders ํ
์ด๋ธ์ ์ถ๊ฐ๋ก ์์ฑํ๊ณ , Users ํ
์ด๋ธ๊ณผ Orders ํ
์ด๋ธ์ ์กฐ์ธํ๋ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
id(pk) | user_id(fk) | product |
---|
1 | 1 | Apple |
---|
2 | 2 | Banana |
---|
3 | 1 | Orange |
---|
4 | 3 | Pineapple |
---|
5 | 4 | Watermelon |
---|
6 | 1 | Strawberry |
---|
7 | 2 | Grape |
---|
8 | 3 | Melon |
---|
9 | 4 | Mango |
---|
Inner Join์ ๋ ํ
์ด๋ธ์์ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ต๋๋ค.
name | product |
---|
ํ๊ธธ๋ | Apple |
---|
์ด๋ํ | Banana |
---|
ํ๊ธธ๋ | Orange |
---|
ํ๋์ด | Pineapple |
---|
ํ๊ธธ์ | Watermelon |
---|
ํ๊ธธ๋ | Strawberry |
---|
์ด๋ํ | Grape |
---|
ํ๋์ด | Melon |
---|
ํ๊ธธ์ | Mango |
---|
Left Join์ ์ผ์ชฝ ํ
์ด๋ธ(Users)์ ๋ฐ์ดํฐ๋ ๋ชจ๋ ๊ฐ์ ธ์ค๊ณ , ์ค๋ฅธ์ชฝ ํ
์ด๋ธ(Orders)์ ๋ฐ์ดํฐ๋ ์ผ์นํ๋ ๊ฒ๋ง ๊ฐ์ ธ์ต๋๋ค.
name | product |
---|
ํ๊ธธ๋ | Apple |
---|
์ด๋ํ | Banana |
---|
ํ๊ธธ๋ | Orange |
---|
ํ๋์ด | |
---|
๐
UNION / UNION ALL๐
๋ ๊ฐ ์ด์์ SELECT ๊ฒฐ๊ณผ๋ฅผ ํฉ์น ๋ ์ฌ์ฉํฉ๋๋ค.
Employees ํ
์ด๋ธ์ ์ถ๊ฐ๋ก ์์ฑํ๊ณ , Users ํ
์ด๋ธ๊ณผ Employees ํ
์ด๋ธ์ ํฉ์น๋ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
id(pk) | name | department |
---|
1 | ํ๊ธธ๋ | ๊ฐ๋ฐํ |
---|
2 | ์ด๋ํ | ๋ง์ผํ
ํ |
---|
3 | ํ๊ธธ์ | ๊ฐ๋ฐํ |
---|
4 | ๊น์ฒ ์ | ๋์์ธํ |
---|
5 | ๋ฐ์ํฌ | ๋ง์ผํ
ํ |
---|
6 | ์ด์์ | ๊ฐ๋ฐํ |
---|
name |
---|
ํ๊ธธ๋ |
---|
์ด๋ํ |
---|
ํ๋์ด |
---|
ํ๊ธธ์ |
---|
๊น์ฒ ์ |
---|
๋ฐ์ํฌ |
---|
์ด์์ |
---|
๐
COUNT / SUM / AVG๐
๋ฐ์ดํฐ์ ๊ฐ์, ํฉ, ํ๊ท ์ ๊ตฌํ ๋ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์
๋๋ค.
๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ๊ตฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ์ ํฉ์ ๊ตฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ์ ํ๊ท ์ ๊ตฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ์ ์ต๋๊ฐ, ์ต์๊ฐ์ ๊ตฌํ ๋ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์
๋๋ค.
๋ฐ์ดํฐ์ ์ต๋๊ฐ์ ๊ตฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ์ ์ต์๊ฐ์ ๊ตฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
๐
IN / BETWEEN / LIKE๐
์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์
๋๋ค.
ํน์ ๊ฐ๋ค ์ค ํ๋์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉํฉ๋๋ค.
name |
---|
ํ๊ธธ๋ |
---|
์ด๋ํ |
---|
ํ๊ธธ์ |
---|
ํน์ ๋ฒ์์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉํฉ๋๋ค.
name |
---|
ํ๊ธธ๋ |
---|
์ด๋ํ |
---|
ํ๊ธธ์ |
---|
ํน์ ํจํด์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ๊ฐ NULL์ธ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์
๋๋ค.
NULL์ธ ๊ฒฝ์ฐ ๋์ฒดํ ๊ฐ์ ์ง์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ ๋ ์ฌ์ฉํฉ๋๋ค.
name | age_group |
---|
ํ๊ธธ๋ | ์ฑ์ธ |
---|
์ด๋ํ | ์ฑ์ธ |
---|
ํ๋์ด | ๋ฏธ์ฑ๋
์ |
---|
ํ๊ธธ์ | ์ฑ์ธ |
---|
๐
DISTINCT / LIMIT๐
์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ์กฐํํ ๋ฐ์ดํฐ ๊ฐ์๋ฅผ ์ ํํ ๋ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์
๋๋ค.
์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ ๋ ์ฌ์ฉํฉ๋๋ค.
์กฐํํ ๋ฐ์ดํฐ ๊ฐ์๋ฅผ ์ ํํ ๋ ์ฌ์ฉํฉ๋๋ค.
์ฟผ๋ฆฌ ์์ ๋ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ๋ฃ์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
SQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃฐ ๋ ํ์์ ์ธ ์ธ์ด์ด๋ฉฐ, ์ฝ๋ฉ ํ
์คํธ์์๋ ์์ฃผ ์ถ์ ๋ฉ๋๋ค. ๋ค์ํ ๋ช
๋ น์ด๋ฅผ ์ตํ๊ณ ์ค์ตํ๋ฉด์ SQL ์ค๋ ฅ์ ํค์ ๋ณด๋๋ก ํฉ์๋ค.
โ
๋ ์๊ฐํด ๋ณด๊ธฐ๐
- ์ค์ ํ๋ก์ ํธ์์ SQL์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์์๊น?
- ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ์ธ๋ฑ์ค๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊น?
- ํธ๋์ญ์
์ ์ธ์ ์ฌ์ฉํ๋ฉด ์ข์๊น?