์ค๋์ sql์ ์ด์ฉํ ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ผ๋ก ์ฐ์ธ๋ค๊ณ ์๊ฐ๋ ๋ฌธ๋ฒ๋ค์ ๋ํด ์์๋ณด์!
SELECT๋ SQL์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํค์๋์ ๋๋ค.
SELECT ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ์ ์ด(column)์ ์ ํํ๊ณ , ์กฐ๊ฑด์ ์ง์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ๊ณ์ฐํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
SELECT ๊ตฌ๋ฌธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
SELECT [์ด1, ์ด2, ...]
FROM [ํ
์ด๋ธ๋ช
]
WHERE [์กฐ๊ฑด์];
SELECT ๋ค์์๋ ์กฐํํ๊ณ ์ ํ๋ ์ด(column)์ ์ด๋ฆ์ ๋์ดํฉ๋๋ค. ๋ชจ๋ ์ด์ ์ ํํ๋ ค๋ฉด *์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
FROM ๋ค์์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ํ ์ด๋ธ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
WHERE ๋ค์์๋ ๊ฒ์ ์กฐ๊ฑด์ ์ง์ ํ๋ฉฐ, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ(row)๋ง์ ๋ฐํํฉ๋๋ค. WHERE ์ ์ ์๋ตํ ์๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์์ MEMBER_PROFILE ํ ์ด๋ธ์์ MEMBER_ID, MEMBER_NAME, TLNO ์ด์ ์ ํํ๊ณ , TLNO ๊ฐ์ด NULL์ด ์๋ ํ๋ง ๋ฐํํ๋ ์ฟผ๋ฆฌ์ ๋๋ค.
SELECT MEMBER_ID, MEMBER_NAME, TLNO
FROM MEMBER_PROFILE
WHERE TLNO IS NOT NULL;
๊ฒฐ๊ณผ๋ก๋ TLNO ๊ฐ์ด NULL์ด ์๋ ํ์ ๋ํ MEMBER_ID, MEMBER_NAME, TLNO ์ด์ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
SELECT ๊ตฌ๋ฌธ์ ๊ทธ ์ธ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ณ์ฐ๋ ์ด, ๋ณ์นญ(alias), ๊ทธ๋ฃนํ, ์ ๋ ฌ ๋ฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋์ฑ ํจ๊ณผ์ ์ผ๋ก ์กฐํํ๊ณ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๊ณ์ฐ๋ ์ด (Computed columns): SELECT ๋ฌธ์์ SELECT ์ ์ ์ง์ ๋ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ์ด์ด๊ฑฐ๋ ํจ์, ์ฐ์ฐ์ ๋ฑ์ ์ฌ์ฉํ์ฌ ๊ณ์ฐ๋ ์ด์ผ ์ ์์ต๋๋ค. ๊ณ์ฐ๋ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ณํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์๋์ SQL ์ฟผ๋ฆฌ๋ "price"์ "quantity" ์ด์ ๊ณฑํ์ฌ "total_price"๋ผ๋ ์๋ก์ด ๊ณ์ฐ๋ ์ด์ ์์ฑํฉ๋๋ค.
SELECT price, quantity, price * quantity AS total_price
FROM products;
๋ณ์นญ (Alias): SELECT ๋ฌธ์์ ์ด ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ณ์นญ์ด๋ผ๊ณ ํฉ๋๋ค. ๋ณ์นญ์ AS ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์๋์ SQL ์ฟผ๋ฆฌ๋ "product_name" ์ด์ "name"์ผ๋ก, "unit_price" ์ด์ "price"๋ก ๋ณ๊ฒฝํ๊ณ , "total_price" ์ด์ ๋ณ์นญ์ "cost"๋ก ์ง์ ํฉ๋๋ค.
SELECT product_name AS name, unit_price AS price, price * quantity AS cost
FROM products;
๊ทธ๋ฃนํ (Grouping): GROUP BY ์ ์ ์ฌ์ฉํ์ฌ ํน์ ์ด ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃน์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ๊ณ ์ง๊ณ ํจ์ (SUM, AVG, MAX, MIN ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ฃน๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ณ์ฐํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์๋์ SQL ์ฟผ๋ฆฌ๋ "category_id" ์ด์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃน์ ์์ฑํ๊ณ , ๊ฐ ๊ทธ๋ฃน๋ณ๋ก "unit_price"์ ํ๊ท ์ ๊ณ์ฐํฉ๋๋ค.
SELECT category_id, AVG(unit_price) AS avg_price
FROM products
GROUP BY category_id;
GROUP BY์ ๋ํด์๋ ๋ค์ ๋ฌธ์ ์์๋ก ๋ ์์ธํ๊ฒ ์์๋ณด์!
์ ๋ ฌ (Sorting): ORDER BY ์ ์ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ ์งํฉ์ ์ ๋ ฌํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ฉฐ, DESC ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์๋์ SQL ์ฟผ๋ฆฌ๋ "unit_price" ์ด์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
SELECT *
FROM products
ORDER BY unit_price DESC;
๋ฐ๋๋ก ์ค๋ฆ์ฐจ์์ ASC ํค์๋๋ฅผ ์ด์ฉํ๋๋ฐ, ๋ณดํต DESC๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ์ฉ ๋๊ธฐ ๋๋ฌธ์ ์๋ต ๊ฐ๋ฅํ๋ค.
์ค๋์ ์ด๋ ๊ฒ SELECT, FROM, WHERE, ORDER BY, AS, GROUPING BY๋ฑ์ ๋ํด ์์๋ณด์์ต๋๋ค!
๋ค์ Sql ๋ฌธ๋ฒ ๊ณต๋ถ๋ ์ด์ฌํ ํด๋ด์! ๐ง๐ง