๋ชฉ์ฐจ
๋ฐ์ดํฐ ๋ฒ ์ด์ค๋?
- ์ฌ๋ฌ ์ฌ๋๋ค์ด ๊ฐ์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ผ๋ ๊ณณ
- ์ฌ์ฉ์๊ฐ ์ํ๋๋๋ก ํ์ฉํ๊ธฐ ์ํด์ CRUD์ ๊ธฐ๋ฅ์ ์ง์ํ๋ค
์ด ์ค ์คํ๋ฅดํ ๊ฐ์์์๋ 'Read'์ ๋ํด์๋ง ๊ณต๋ถํ๋ค!
SQL์ด๋?
- Structured Query Language ์ ์ฝ์!
- Query(์์ฒญ)๋ฅผ ๋ ๋ ค์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ ์ธ์ด์ด๋ค.
- ์ฆ, ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ช ๋ น์ด๋ฅผ ์์ฑํ๋ ๊ฒ์ด 'SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค' ๋ผ๊ณ ํ๋ค.
SQL์ด ํ์ํ ์ด์ ?
- ๋ฐ์ดํฐ๋ฅผ Readํ๋ ๊ณผ์ ์ ๊ต์ฅํ ๊ฐํธํ๊ฒ ํ ์ ์๋๋ก ํด์ค๋ค.
- ๋ฐ์ดํฐ ์ ๋ฆฌ ๋ฐ ๋ถ์ ๊ธฐ๋ฅ์ ์ง์ํ๋ค.
Select & Where
- ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ณ (select), ์กฐ๊ฑด์ ๋ง๊ฒ ํํฐ๋ง(where)!
Select
select ์ฟผ๋ฆฌ๋ฌธ์ด๋?
์ฟผ๋ฆฌ๋ ์ง์, ์์ฒญ์ ์๋ฏธํ๋ค. ์ฆ, DB์ ๋ช ๋ น์ ๋ด๋ฆฌ๋ ๊ฒ์ด๋ค.
select ์ฟผ๋ฆฌ๋ฌธ์ DB์์ '๋ฐ์ดํฐ๋ฅผ ์ ํํ์ฌ ๊ฐ์ ธ์ค๋ ๊ฒ'์ ์๋ฏธํ๋ค.
๊ตฌ์ฑ
โ ์ด๋ค ํ ์ด๋ธ์์ โก์ด๋ค ํ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ์ง!
ํ
์ด๋ธ : ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด ๊ณณ ํ๋ : Column์ ํด๋นํ๋ ๊ฒ, |
SELECT (ํ๋) FROM (ํ
์ด๋ธ)
ํ ์ด๋ธ ํ์ธํ๊ธฐ
show tables;
์ค์ต์์๋ DB๋ด์ ์์ ๊ฐ์ 8๊ฐ์ ํ ์ด๋ธ์ด ์กด์ฌํ๋ค.
select๋ฅผ ์ด์ฉํด ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
๋ชจ๋ ํ๋(*)๋ฅผ ๊ฐ์ ธ์ค๋ฉด ์๋์ ๊ฐ๋ค!
SELECT * FROM users u
ํน์ ํ๋๋ฅผ ๊ฐ์ ธ์ค๋ฉด
SELECT user_id , name FROM users u
Where
where ์ ์ด๋?
- select ์ฟผ๋ฆฌ๋ฌธ์ผ๋ก ๊ฐ์ ธ์ฌ ๋ฐ์ดํฐ์ ์กฐ๊ฑด์ ๊ฑธ์ด์ฃผ๋ ๊ฒ!
SELECT (ํ๋) FROM (ํ
์ด๋ธ)
WHERE (์กฐ๊ฑด)
ex) users ํ ์ด๋ธ์์ ์ด์จ ์ฑ์ ๊ฐ์ง ์ฌ๋๋ค์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
SELECT * FROM users u
WHERE name = '์ด**'
์์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
์ด๋, ์ฃผ์ํ ์ ์ ๋ฌธ์์ด์ ๊ฒฝ์ฐ '' ํน์ ""์ ์ด์ฉํ์ฌ ๋ช ์ ํ์ฌ์ผํ๋ค.
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๊ธ์๋ฅผ ํ๋๋ช ์ผ๋ก ์ธ์ํ๋ค.
Where์ ์ ์กฐ๊ฑด ๋ฌธ๋ฒ
1) ๋ฑํธ, ๋ถ๋ฑํธ ์กฐ๊ฑด
=, !=, >, >=
2) ๋ฒ์ ์กฐ๊ฑด
between
ex) 20๋ 7์์ ๊ฐ์ ํ ์ ์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
SELECT * FROM users u
WHERE created_at BETWEEN "2020-07-01" and "2020-08-01"
3) ํฌํจ ์กฐ๊ฑด
in
ex) ๊ฒฐ์ ๋ฐฉ์์ด ์นด์นด์คํ์ด์ ์นด๋์ธ ์ฃผ๋ฌธ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
SELECT order_no , payment_method FROM orders o
WHERE payment_method in ('kakaopay', 'CARD')
4) ํจํด(๋ฌธ์์ด๊ท์น) ์กฐ๊ฑด
like
ex)
'A%' : A๋ก ์์ํ๋ ๋ฌธ์์ด
'%A' : A๋ก ๋๋๋ ๋ฌธ์์ด
'%A%' : A๊ฐ ํฌํจ๋ ๋ฌธ์์ด
'A%B' : A๋ก ์์ํ๊ณ B๋ก ๋๋๋ ๋ฌธ์์ด
...
ex) 'ํ์ดํ '์ด ํฌํจ๋จ ๋ค์ง ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
SELECT user_id , comment FROM checkins c
WHERE comment LIKE '%ํ์ดํ
%'
์ด์ธ ์ ์ฉํ ๋ฌธ๋ฒ
Limit, Distinct, Count
1) ์ผ๋ถ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๊ธฐ
Limit
ex)
SELECT * FROM orders o
Limit 5
2) ์ค๋ณต ๋ฐ์ดํฐ ์ ์ธํ๊ณ ๊ฐ์ ธ์ค๊ธฐ
Distinct
ex)
SELECT DISTINCT(name) FROM users u
3) ์นด์ดํธ
Count
ex)
SELECT COUNT(*) FROM orders o
+) distinct์ count ํจ๊ป ์ฌ์ฉํ๊ธฐ
ex)
SELECT COUNT(DISTINCT(name)) FROM users u
๋๊ธ