์ด๋ฒ ์๊ฐ์๋ SQL์์ ๋ฐ์ดํฐ ๊ฐ๊ณต๊ณผ ์กฐ๊ฑด๋ฌธ์ ๋ํด์ ์ ๋ฆฌํด ๋ณด์๋ค
# SQL ๊ธฐ์ด
1) SQL ์์ ๊ฐ์ฅ ๊ธฐ์ด๊ฐ ๋๋ ๊ฒ์
select
from
where
group by
order by
์ด ๊ตฌ๋ฌธ์ด๋ค
2) ๋ํ, select๋ฌธ์์ ๊ฐ๊ฐ์ ์ปฌ๋ผ๋ค์ ๋ค์ฌ์ฐ๊ธฐ๋ก ๊ตฌ๋ถํ๋ค๋ฉด ๋์ฑ ๊ฐ๋ ์ฑ์ด ์ข์์ง๋ค!
select name,
age,
gender
from customers
์ด๋ฐ ์์ผ๋ก!
< ๋ฐ์ดํฐ ๊ฐ๊ณต >
๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ค๋ณด๋ฉด, Query ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋๋ก ์ด์ฉํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค
์๋ฅผ ๋ค์ด์, ๋ณด๋ ธ๋ณด๋ ธ ํ์์ด ์ด๋ ๊ฒ ์ง๋ฌธํ๋ค
"์ ๋ ์ฃผ์ ์ ์ฒด๊ฐ ์๋ ‘์๋’ ์ ๋ณด๋ง ํ์ํด์. ์์ธ์ ํต๊ณ๋ง ๊ตฌํ๊ณ ์ถ์๋ฐ, ์ ์ฒด ์ฃผ์๊ฐ ์๋ ‘์์ธ’ ๋ก ๋ฌธ์๋ฅผ ๋ณ๊ฒฝํ ์๋ ์์๊น์?"
.. ๊ทธ๋ ๋ค ๋ฐ์ดํฐ ๊ฐ๊ณต์ด ํ์ํ ์์ ์ด๋ค !!
์ด๋ฒ ์๊ฐ์๋ ๋ฐ์ดํฐ ๊ฐ๊ณต์ ํ์ํ ํจ์ REPLACE, SUBSTRING, CONCAT ๋ค์ ์๊ฐํด ์ฃผ๋ ค๊ณ ํ๋ค!
1) REPLACE
ํน์ ๋ฌธ์๋ฅผ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ฐ๊ฟ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค
replace(๋ฐ๊ฟ ์ปฌ๋ผ, ํ์ฌ ๊ฐ, ๋ฐ๊ฟ ๊ฐ)
# ์์
select restaurant_name "์๋ ์์ ๋ช
",
replace(restaurant_name, 'Blue', 'Pink') "๋ฐ๋ ์์ ๋ช
"
from food_orders
where restaurant_name like '%Blue Ribbon%'
2) SUBSTRING (SUBSTR)
์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์๋ ํน์ ๋ฌธ์๋ง ํ์ํ ๋, SQL ๋ก ํ์ํ ๋ถ๋ถ๋ง ์กฐํํ ์ ์๋ค
substr(์กฐํ ํ ์ปฌ๋ผ, ์์ ์์น, ๊ธ์ ์)
# ์์
select addr "์๋ ์ฃผ์",
substr(addr, 1, 2) "์๋"
from food_orders
where addr like '%์์ธํน๋ณ์%'
โป ํท๊ฐ๋ฆด์ ์๋ ๋ถ๋ถ
limit ํจ์์์
limit ์์, ๊ฐ์
ํ ์ด๋ธ ๋ฐ์ดํฐ์ ์ฒ์ ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์ํ๋ค
๊ทธ๋ฌ๋ substr ํจ์๋ ์ธ๋ฑ์ค๊ฐ 1๋ถํฐ ์์ํ๋ค!
3) CONCAT
์ํ๋ ๋ฌธ์๊ฐ ์ฌ๋ฌ ์ปฌ๋ผ์ ์์ ๋, ํ๋๋ก ํฉ์ณ์ ์ ๋ฌด์ ํ์ํ ํํ๋ก ๋ง๋ค ์ ์๋ค
concat(๋ถ์ด๊ณ ์ถ์ ๊ฐ1, ๋ถ์ด๊ณ ์ถ์ ๊ฐ2, ๋ถ์ด๊ณ ์ถ์ ๊ฐ3, .....)
# ์์
select restaurant_name "์๋ ์ด๋ฆ",
addr "์๋ ์ฃผ์",
concat('[', substring(addr, 1, 2), '] ', restaurant_name) "๋ฐ๋ ์ด๋ฆ"
from food_orders
where addr like '%์์ธ%'
< ์กฐ๊ฑด๋ฌธ >
๊ทธ๋ ๋ค๋ฉด ํ์ด์ฌ if๋ฌธ์ฒ๋ผ SQL์์๋ if๋ฌธ๊ณผ ๊ฐ์ ์กฐ๊ฑด๋ฌธ์ด ์์๊น?
๋น์ฐํ ์๋ค!
์ค๋์ ์ด 2๊ฐ์ ์กฐ๊ฑด๋ฌธ์ ์๊ฐํด ์ฃผ๊ฒ ๋ค
IF๋ฌธ๊ณผ CASE ๋ฌธ์ด๋ค!!
์ฌ๊ธฐ์ CASE ๋ฌธ์ ํ์ด์ฌ์์ if ~ elif ~ else์ฒ๋ผ ์กฐ๊ฑด์ด ์ฌ๋ฌ๊ฐ์ผ๋ ์ฌ์ฉํ ์ ์๋ค
1) IF๋ฌธ
์ํ๋ ์กฐ๊ฑด์ ์ถฉ์กฑํ ๋ ์ ์ฉํ ๋ฐฉ๋ฒ๊ณผ ์๋ ๋ฐฉ๋ฒ์ ์ง์ ํด ์ค ์ ์๋ค
if(์กฐ๊ฑด, ์กฐ๊ฑด์ ์ถฉ์กฑํ ๋, ์กฐ๊ฑด์ ์ถฉ์กฑํ์ง ๋ชปํ ๋)
# ์์
select restaurant_name,
cuisine_type "์๋ ์์ ํ์
",
if(cuisine_type='Korean', 'ํ์', '๊ธฐํ') "์์ ํ์
"
from food_orders
2) CASE ๋ฌธ
์กฐ๊ฑด์ ์ง์ ํ๋ค๋ณด๋ฉด, ๋ ๊ฐ ์ด์ ์ง์ ์ ํด์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค. ์ด ๋๋ case ๋ฌธ์ ์ด์ฉํ์ฌ ์ฌ๋ฌ๋ฒ์ if ๋ฌธ์ ์ ์ฉ ํ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค
case when ์กฐ๊ฑด1 then ๊ฐ(์์)1
when ์กฐ๊ฑด2 then ๊ฐ(์์)2
else ๊ฐ(์์)3
end
โป ์ฌ๊ธฐ์ else๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ when๋ง ์ฌ์ฉํ ์๋ ์๋ค!
# ์์
select order_id,
price,
quantity,
case when quantity=1 then price
when quantity>=2 then price/quantity end "์์ ๋จ๊ฐ"
from food_orders
'Knowledge๐ฆข > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQL] ํ ์ด๋ธ ์๋ฃํ ์ข ๋ฅ (0) | 2024.04.19 |
---|---|
[SQL] union๊ณผ union all์ ์ฐจ์ด์ (0) | 2024.04.16 |
[SQL] SQL ์ฟผ๋ฆฌ๋ฌธ์ ์คํ ์์ (0) | 2024.04.12 |
[SQL] ์ง๊ณํจ์์ ๋ํด์ - count(*), count(์ปฌ๋ผ), ์ง๊ณํจ์(์ปฌ๋ผ) (1) | 2024.04.12 |
[SQL] ์ฐ์ฐ์์ ์ข ๋ฅ (0) | 2024.04.04 |