๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๋ ๊ฐ๋ฐ์๋ผ๋ฉด ์ฝ๊ธฐ ์ด๋ ค์ด SQL ์ฟผ๋ฆฌ๋ฅผ ๋ง๋๋ณธ ์ ์์ ๊ฒ์ด๋ค. ์ SQL์ ์ง์ ๋ถํด์ง๊ณ ์ด๋ป๊ฒ ์ ๋ฆฌํ ๊น.
SQL์ด๋
SQL(Structured Query Language)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํ, ์ฝ์ , ์์ , ์ญ์ ํ๋ ์ธ์ด๋ค. 1970๋ ๋ IBM์์ ๊ฐ๋ฐ๋์ผ๋ฉฐ ์ง๊ธ๋ ์ ์ธ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ค์ผ๋ก ์ฐ์ธ๋ค.
SQL์ด ์ง์ ๋ถํด์ง๋ ์ด์
SQL์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ์ค๋ฐ๊ฟ์ด ์์ด๋ ์คํ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ๊ธํ๊ฒ ์์ฑํ๊ฑฐ๋ ๋๊ตฌ์์ ์๋ ์์ฑ๋ SQL์ ์ด๋ฐ ํํ๊ฐ ๋๋ค.
select u.id,u.name,o.total from users u inner join orders o on u.id=o.user_id where u.active=1 and o.total>1000 order by o.total desc limit 10
์ด๊ฒ์ ์ ๋๋ก ํฌ๋งทํ๋ฉด:
SELECT u.id, u.name, o.total FROM users u INNER JOIN orders o ON u.id = o.user_id WHERE u.active = 1 AND o.total > 1000 ORDER BY o.total DESC LIMIT 10
๊ฐ์ ์ฝ๋์ง๋ง ์ฝ๊ธฐ ํจ์ฌ ์ฝ๋ค.
SQL ๊ฐ๋ ์ฑ์ด ์ ์ค์ํ๊ฐ
๋ฒ๊ทธ ์ฐพ๊ธฐ: ์ ๋ ฌ๋ ์ฝ๋์์ ์ค์๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์ฝ๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ: ํ์์ด ๊ฒํ ํ ๋ ์ดํดํ๊ธฐ ์ฝ๋ค. ์ ์ง๋ณด์: 6๊ฐ์ ํ ๋ณธ์ธ์ด ๋ค์ ๋ด๋ ์ดํดํ ์ ์๋ค.
SQL ์ปจ๋ฒค์ ๊ธฐ์ด
ํค์๋(SELECT, FROM, WHERE)๋ ๋๋ฌธ์๋ก ์ด ์ด๋ฆ์ ์๋ฌธ์ ๋๋ snake_case๋ก ๊ฐ ์ (clause)์ ์ ์ค์์ ์์ AND, OR๋ ๋ค์ฌ์ฐ๊ธฐ
ToolZip ๋๊ตฌ ๋ฐ๋ก๊ฐ๊ธฐ
SQL ํฌ๋งทํฐ ๋ฐ๋ก๊ฐ๊ธฐ โ https://www.toolzip.app/tools/sql-formatter
์ง์ ๋ถํ SQL ์ฟผ๋ฆฌ๋ฅผ ๋ถ์ฌ๋ฃ์ผ๋ฉด ๋ค์ฌ์ฐ๊ธฐ์ ์ค๋ฐ๊ฟ์ด ์ ๋ฆฌ๋๋ค. ๋ธ๋ผ์ฐ์ ์์๋ง ์ฒ๋ฆฌ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ: ํค์๋ ์๋ ๋๋ฌธ์ ๋ณํ ์ (clause)๋ณ ์ค๋ฐ๊ฟ ์ฒ๋ฆฌ AND/OR ๋ค์ฌ์ฐ๊ธฐ JOIN ์ฒ๋ฆฌ CASE WHEN ๋ค์ฌ์ฐ๊ธฐ ์์ถ(Minify) ๊ธฐ๋ฅ (ํ ์ค๋ก ๋ง๋ค๊ธฐ) ์์ ์ฟผ๋ฆฌ 2๊ฐ ์ ๊ณต ๊ฒฐ๊ณผ ๋ณต์ฌ ๋ฒํผ
์ ๋ฆฌ
- โ ์ค์น ์์ด ๋ธ๋ผ์ฐ์ ์์ ๋ฐ๋ก ์ฌ์ฉ
- โ ํ์ผ์ด ์๋ฒ๋ก ์ ์ก๋์ง ์์
- โ ์์ ๋ฌด๋ฃ
๊ด๋ จ ๋๊ตฌ: JSON ํฌ๋งทํฐ ยท ์ ๊ท์ ํ ์คํฐ ยท UUID ์์ฑ๊ธฐ