์๋ ํ์ธ์, KB IT's Your Life 7๊ธฐ ๊ธฐ์๋จ์ ๋๋ค!
์ค๋ ์ ๋ฆฌํ ๋ด์ฉ์ DB ์ค๊ณ ๋ถํฐ SQL ์ค์ต๊น์ง ์
๋๋ค!
์ด๋ฒ์ SQLD ์ํ์ ๋ณด๋๋ฐ ์ฌ๊ธฐ์ ๋ฐฐ์ฐ๋ ๋ด์ฉ๋ค์ด ๋ง์ด ๋์ถค์ด ๋๊ณ ์ฌ๋ฐ์์ด์!!
๊ทธ๋ผ ์์ํด๋ณผ๊ฒ์~
DB ๋ชจ๋ธ๋ง
์์งํ ์ฒ์์ ๋ชจ๋ธ๋ง? ์ถ์์ด์.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ธ๋ฐ ๊ฐ์๊ธฐ ์ค๊ณ ์๊ธฐ๊ฐ ๋์ค๋๊น์..
ํ
์ด๋ธ์ ๊ทธ๋ฅ ๋ง ๋ง๋ค๋ฉด ๋์ค์ ๋ค ๊ฐ์์์ด์ผ ๋๋๋ฐ
๊ทธ๋์ ๋ฏธ๋ฆฌ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ํ์ํ๊ณ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ์ง๋ฅผ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํด์ผํด์
์ด ๊ณผ์ ์ด ๋ชจ๋ธ๋ง์ด์์.
๋จ๊ณ๊ฐ ์ธ ๊ฐ ์๋๋ฐ์,
๊ฐ๋
์ ๋ชจ๋ธ๋ง์ ๊ณ ๊ฐ์ด๋ ๊ฐ๋ฐ์๊ฐ "์ด๋ฐ ๋ฐ์ดํฐ ๋ง์ฃ ?" ํ์ธํ๋ ๋จ๊ณ,
๋
ผ๋ฆฌ์ ๋ชจ๋ธ๋ง์ ๊ฐ๋ฐ์๋ค๋ผ๋ฆฌ ERD ๊ทธ๋ฆผ ๊ทธ๋ ค๊ฐ๋ฉฐ ํ
์ด๋ธ ๊ตฌ์กฐ ์ก๋ ๋จ๊ณ,
๋ฌผ๋ฆฌ์ ๋ชจ๋ธ๋ง์ ์ค์ ๋ก CREATE TABLE ๊ฐ์ SQL๋ก ๊ตฌํํ๋ ๋จ๊ณ์์.

์ ํ ์ด๋ธ์ ๊ตณ์ด ๋ ๊ฐ๋ก ๋๋๋ ๊ฑฐ์ผ?
์ด๊ฒ ์ค๋ ์ ์ผ ์ธ์ ๊น์๋ ํํธ์์.
์ผํ๋ชฐ ์์ ๋ก ์ค๋ช ํด์ฃผ์ จ๋๋ฐ์, ๊ณ ๊ฐ ์ ๋ณด๋ ๊ตฌ๋งค ์ด๋ ฅ์ ํ ํ ์ด๋ธ์ ๋ค ๋ฃ์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
๊ตฌ๋งค ์ ํ ๊ณ ๊ฐ ํ์ ์ค๋ฅธ์ชฝ์ด ํ
ํ
๋น๊ณ , ๊ฐ์ ๊ณ ๊ฐ์ด ์ฌ๋ฌ ๋ฒ ์ฌ๋ฉด ์ด๋ฆยท์ฃผ์ยท์ฐ๋ฝ์ฒ๊ฐ ์ค๋ณต์ผ๋ก ๊ณ์ ์์ฌ์.
๊ฐ์ฌ๋์ด ์ค๋ณต ๋ฐ์ดํฐ์ ์ง์ง ๋ฌธ์ ๋ ์์ ์ด๋ ์ญ์ ํ ๋๋ผ๊ณ ํ์
จ์ด์.
์ฃผ์ ํ๋ ๋ฐ๋๋ฉด ๊ทธ ๊ณ ๊ฐ ํ์ ์ ๋ถ ๋ค ์ฐพ์์ ๊ณ ์ณ์ผ ๋๋๊น์.

๊ทธ๋์ ํ
์ด๋ธ์ ๋ ๊ฐ๋ก ๋ถ๋ฆฌํด์.
๊ณ ๊ฐ ํ
์ด๋ธ์ Primary Key ๋ฐฐ์ (์ค๋ณต ์์, NULL ๋ถ๊ฐ),
๊ตฌ๋งค ํ
์ด๋ธ์ ๊ณ ๊ฐ ํ
์ด๋ธ์ PK๋ฅผ Foreign Key๋ก ์ฐธ์กฐํ๋ ๊ตฌ์กฐ๋ก์.
์ด๋ ๊ฒ ์ฐ๊ฒฐํ๋ฉด ๊ตฌ๋งค ํ ์ด๋ธ์์ "๋๊ฐ ์๋"๋ฅผ ์ ์ ์๊ณ , ์ฃผ์ ๊ฐ์ ์ ๋ณด๋ ๊ณ ๊ฐ ํ ์ด๋ธ ํ๊ณ ๊ฐ์ ์ฐพ์ผ๋ฉด ๋ผ์.
๋ถ๋ชจ ์์ผ๋ฉด ์์๋ ์๋ค๋ ๋ง๋ ์ค๋ ์ฒ์์ผ๋ก ์ ๋๋ก ์ดํดํ์ด์.
๊ณ ๊ฐ์ด ์์ผ๋ฉด ๊ตฌ๋งค ์ด๋ ฅ๋ ์๋ ๊ฑฐ๋๊น, ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ค๊ณ ํ๋ฉด ์์คํ
์ด ์๋์ผ๋ก ๋ง์์ค๋ค๊ณ ํ๋๋ผ๊ณ ์.
๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์งํค๊ธฐ ์ํด์์!

SQL ์ค์ต โ SELECT ํํค์น๊ธฐ
์คํ์ ์ง์ ์ฟผ๋ฆฌ ์ง๋ ์ค์ต์ด์์ด์.
์ค๋์ ์ฃผ์ธ๊ณต์ SELECT!
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด
ORDER BY ์ปฌ๋ผ๋ช
DESC
LIMIT 5;
๊ทธ๋ฅ ์ธ์ฐ๋ฉด ๋๋ ๊ฒ ์๋๋ผ ๊ฐ ์ ์ด ์ฒ๋ฆฌ๋๋ ์์๊ฐ ๋ฐ๋ก ์์ด์.FROM โ WHERE โ GROUP BY โ HAVING โ SELECT โ ORDER BY ์ด ์์์ธ๋ฐ,
์ด๊ฒ ๋์ค์ ๋ณ์นญ(alias)์ ์ด๋์ ์ธ ์ ์๋์ง๋ ์ฐ๊ฒฐ๋๋ ์ค์ํ ํฌ์ธํธ์์.

์ค๋ ์ค์ตํ๋ฉด์ ์ฃผ์์ฌํญ์ผ๋ก ๊ณ์ ๋์จ ๊ฒ NULL์ด์์ด์.
NULL์ ์ผ๋ฐ ๋น๊ต ์ฐ์ฐ์๋ก ๋น๊ต๊ฐ ์ ๋ผ์!WHERE price = NULL ์ด๋ฐ ๊ฑฐ ์ ๋๊ณ , ๋ฐ๋์ IS NULL / IS NOT NULL์ ์จ์ผ ํด์.
๊ทธ๋ฆฌ๊ณ AVG, MIN, MAX ๊ฐ์ ์ง๊ณํจ์๋ ์ ๋ถ NULL์ ๋ฌด์ํ๊ณ ๊ณ์ฐํ๋ค๋ ๊ฒ๋ ๊ธฐ์ตํด๋๊ธฐ!
LIKE ์ฐ์ฐ์๋ ์ค์ตํ๋๋ฐ, ์๋ค๋ก % ๋ถ์ด๋ฉด ์๋๊ฐ ์์ฒญ ๋๋ ค์ง๋ค๊ณ ํด์.
WHERE prod_name LIKE '%์์ด์ค%' -- ๋ฐ์ดํฐ ๋ง์์ง๋ฉด ์ง์ง ๋๋ ค์ง
๋ฐ์ดํฐ ์ฒ ๊ฑด๋ง ๋์ด๋ ์ฒด๊ฐ๋๋ค๊ณ ํ๋๋ผ๊ณ ์. ์ค์ ์์๋ Elastic Search ๊ฐ์ ๊ฒ์ ์์ง์ ์จ์ผ ํ๋ค๊ณ !
GROUP BY
์ฌ์ฉ์๋ณ ๊ตฌ๋งค ๊ธ์ก, ์นดํ
๊ณ ๋ฆฌ๋ณ ์ํ ์ ์ด๋ฐ ๊ฑฐ๋
๊ฐ์ ๊ฐ์ ๊ฐ์ง ํ๋ค์ ๋ฌถ์ด์ ์ง๊ณํจ์๋ก ํต๊ณ๋ฅผ ๋ด๋ ๊ฑฐ์์.
SELECT user_id, SUM(amount * price) AS ์ด๊ตฌ๋งค์ก
FROM buy
GROUP BY user_id
ORDER BY SUM(amount * price) DESC
LIMIT 1;
์ด๋ ๊ฒ ํ๋ฉด ๊ตฌ๋งค์ก 1๋ฑ ๊ณ ๊ฐ์ ๋ฝ์ ์ ์์ด์.
์ฃผ์ํ ์ ์ด ์๋๋ฐ, GROUP BY ์ธ ๋ SELECT์ ์ GROUP BY์ ์ฐธ์ฌํ ์ปฌ๋ผ์ด๋ ์ง๊ณํจ์ ๊ฒฐ๊ณผ๋ง ์ฌ ์ ์์ด์.
๋ค๋ฅธ ์ผ๋ฐ ์ปฌ๋ผ ๋ฃ์ผ๋ฉด Only FULL GROUP BY Mode ์๋ฌ๊ฐ ๋จ๊ฑฐ๋ ์.
๊ทธ๋ฆฌ๊ณ ORDER BY์์ ๋ณ์นญ์ ์ฐ๋ฉด ๋์ ์ ํด์.
๋ณ์นญ์ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ๊ฐ ๋ค ๋๋๊ณ ๊ฒฐ๊ณผ๊ฐ ๋๊ฐ ๋ ์ ์ฉ๋๋ ๊ฑฐ๋ผ์, ORDER BY ์์ ์ ์์ง ๊ทธ ์ด๋ฆ์ ๋ชจ๋ฅธ๋ค๋ ๊ฑฐ์ฃ .
์ฒ์์ ์ด๊ฒ ์ ์ ๋์ง? ์ถ์๋๋ฐ ์ฒ๋ฆฌ ์์ ์๊ฐํ๋๊น ๋ฐ๋ก ์ดํด๋์ด์

LIMIT
LIMIT 5๋ ์์์ 5๊ฐ, LIMIT 10, 5๋ 10๋ฒ ์ธ๋ฑ์ค๋ถํฐ 5๊ฐ.
(์ฌ๊ธฐ์ ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์์ด์์!)
ํ์ด์ง๋ค์ด์
ํ ๋ ๊ผญ ์ฐ๋ ๊ธฐ๋ฅ์ธ๋ฐ์, ์ค๋ ๊ฐ์ฌ๋์ด ์ธ์ ๊น์ ์๊ธฐ๋ฅผ ํ์
จ์ด์.
์ฒ ๊ฑด์ง๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๋ค ๊ฐ์ ธ์์ ์ฑ์์ 10๊ฐ๋ง ๋ณด์ฌ์ฃผ๋ ๊ฐ๋ฐ์๋,
DB์์ ์ฒ์๋ถํฐ 10๊ฐ๋ง ์์ฒญํ๋ ๊ฐ๋ฐ์์ ์ฐจ์ด๋ผ๊ณ ์.

๋คํธ์ํฌ ๋น์ฉ์ด๋ฉฐ ์ฒ๋ฆฌ ์๋๋ฉฐ ๋น์ฐํ ํ์๊ฐ ํจ์ฌ ๋ซ์ฃ .
๊ทผ๋ฐ ์ค์ ๋ก ์ ์์ฒ๋ผ ์ง๋ ์ฌ๋์ด ๊ฝค ์๋ค๊ณ ํ๋๋ผ๊ณ ์...
๋์ค์ ์ ๊ฐ ๊ทธ๋ฌ์ง ์๋๋ก ๊ผญ ๊ธฐ์ตํด์ผ๊ฒ ์ด์!
SELECT๋ก ํ ์ด๋ธ์ ๋๋ฑ ๋ง๋ค์ด๋ฒ๋ฆฐ๋ค๊ณ ?
๋ง์ง๋ง์ ์ ๊ธฐํ ๊ธฐ๋ฒ๋ ๋ฐฐ์ ์ด์.
SELECT ๊ฒฐ๊ณผ๋ก ์์ ์ ํ
์ด๋ธ์ ๋ง๋๋ ๊ฒ!
CREATE TABLE members AS (
SELECT emp_no AS user_id, first_name AS name
FROM employees.employees
LIMIT 100
);
๋ค๋ฅธ DB์ ์๋ ๋ฐ์ดํฐ 100๊ฐ ๋ฝ์์ ํ
์คํธ์ฉ ํ์ ํ
์ด๋ธ ๋๋ฑ ๋ง๋๋ ๊ฑฐ์์.
ํ
์คํธ ๋ฐ์ดํฐ ๊ตฌ์ถํ ๋ ์ง์ง ํธํ๊ฒ ๋ค ์ถ์์ด์.
๊ทผ๋ฐ ์ฃผ์ํ ๊ฒ ์๋๋ฐ, Primary Key, Foreign Key๋ ๋ณต์ฌ๊ฐ ์ ๋ผ์!
๋์ค์ ALTER๋ก ๋ฐ๋ก ์ถ๊ฐํด์ค์ผ ํ๋ค๊ณ ํ๋๋ผ๊ณ ์.

์ค๋ ํ๋ฃจ ๋ฐฐ์ด ๋ด์ฉ์ด ๋ง์๋๋ฐ, ์์ธ๋ก ๋ค ์ฐ๊ฒฐ๋๋ ๋๋์ด์ด์ ์ดํดํ๊ธฐ ์ข์์ด์.
๋ชจ๋ธ๋ง โ ํ
์ด๋ธ ๋ถ๋ฆฌ โ SELECT ์ค์ต โ GROUP BY ํต๊ณ๊น์ง ํ๋์ ํ๋ฆ์ด์๋ฌ๊น์.
๋ค์์ JOIN์ด๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ํ๋ค๋๋ฐ,
์ค๋ ์ด์ง ๋ง๋ดค์ผ๋๊น ๊ทธ๋๋ง ๋ ๋ฌด์ญ๊ฒ ์ฃ ? (์๋ง๋)
๊ทธ๋ผ ์ด๋ง ๋๋ด๋ณด๊ฒ ์ต๋๋ค
์ฝ์ด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋น ๋ค์ ํฌ์คํ
์์ ๋ด์!
์ด๋ฏธ์ง๋ AI๋ก ์์ฑ๋์์ต๋๋ค