์นดํ ๊ณ ๋ฆฌ ์ด๋ณด์๋ ์ค๋นํ๋ SQL ์ฝ๋ฉ ํ ์คํธ์ ๊ฐ์๋ฉด ํด๋น ์๋ฆฌ์ฆ๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค.
- ํด๋น ์๋ฆฌ์ฆ๋ฅผ ์์ํ๋ฉฐ
- ๊ธฐ์ด ์ด๋ก ๋ค์ง๊ธฐ
- ์ด๋ณด์๋ ์ค๋นํ๋ SQL ์ฝ๋ฉ ํ ์คํธ ์๋ฆฌ์ฆ๋ฅผ ๋ง์น๋ฉฐ ๋ถ์ -์ด์ ๋ญ ํด์ผ ํ๋์?
๋ชฉ์ฐจ
- ์์ ํ๊ฒฝ ์ธํ
- SELECT ๋?
- SELECT์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
- SELECT์ WHERE
- ์กฐ๊ฑด ์ฐ์ฐ์
- ๊ด๊ณ ์ฐ์ฐ์
- BETWEEN A AND B
- IN
- SELECT์ ORDER BY
- ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
- ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ

์ง๋ ์๊ฐ์ ๋์ถฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๊ณ์ ๋ํด์ ์์๋ณด์๋ค.
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ง์๋ฌธ์ ๋ํด์ ์์๋ณผ ๊ฒ์ธ๋ฐ ์์๋ณด๊ธฐ ์ ์ ์ฌ์ ์ค๋น๋ฌผ์ด ํ์ํ๋ค.
- ์๋์ฐ์์ MySQL ์ค์น ๋ฐฉ๋ฒ
- ๋งฅ์์ MySQL ์ค์น ๋ฐฉ๋ฒ
- ์ํ ํ ์ด๋ธ & ๋ฐ์ดํฐ ์ถ๊ฐ
MySQL์ ์์ ๋งํฌ์์ ์ค์นํ ์ ์๊ณ , ์ํ ๋ฐ์ดํฐ ๋ํ ์์ ๋งํฌ์์ ๋ฐ์ ์ ์๋ค.
๊ฐ์ ์ค์น๋ฐ ์ธํ
ํ๊ณ ๋ค์ ๋์์ค์.
์ด๋ฒ ์๋ฆฌ์ฆ์ ๋ชฉ์ ์ ์ง์๋ฌธ์ ํตํด์ ์ฝ๋ฉ ํ ์คํธ๋ฅผ ์ค๋นํ๋ ์๋ฆฌ์ฆ์ด๋ฏ๋ก ์ด๋ค ์ค์น ๊ณผ์ ์ด๋ ์๋ฆฌ์ฆ ์ฃผ์ ์ ๋ฒ์ด๋ ์ด๋ก ๋ค์ ์ต์ํ ํ๊ธฐ ์ํด ๋ค๋ฅธ ๋งํฌ๋ก ์ฐ๊ฒฐ์ํจ์ ์ ์ํด๋ฐ๋๋๋ค ใ ใ ..
์ด์ ๋ถํฐ ์ค์ง์ ์ธ ์ง์๋ฌธ์ ๋ํด์ ์์๋ณด์.
SELECT
SELECT๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์์์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐ์ํ๋ ์์ฃผ์์ฃผ์์ฃผ ๊ธฐ์ด์ ์ด๊ณ ์ค์ํ ๋ช ๋ น์ด์ด๋ค.
SELECT ๋ฌธ์ ๊ธฐ๋ณธ์ ์ธ ์ฐ์์ ๋ค์๊ณผ ๊ฐ๋ค.
SELECT select_expr
FROM table_reference
WHERE where_condition
GROUP BY column_name or expression or position
HAVING where_condition
ORDER BY column_name or expression or position
SELECT ๋ฌธ์์๋ ์กฐ๊ฑด์ ์ฃผ๊ฑฐ๋, ์ํ๋๋ฐ๋ก ๋ฌถ๋๋ค๊ฑฐ๋, ํน์ ์์๋ก ์ ๋ ฌ์ ํ ์ ์๋ค.
์ด๋ฌํ ํน์ ๊ธฐ๋ฅ์ ์ํํ ์ ์๊ฒ ํ๋ ๊ตฌ๋ฌธ์ด ๋ฐ๋ก
- WHERE
- GROUP BY
- HAVING
- ORDER BY
์ด๋ฉฐ ์ด๋ค์ ์์น์ ์์๋ ์ง์ผ์ ธ์ผ ํ๋ค.
์์์ MySQL ์ค์น์ ์ค์ต ํ๊ฒฝ ์ธํ ์ด ๋๋ฌ๋ค๋ฉด ์ฐ๋ฆฌ์ workbench๋ก ๊ฐ์ ํ ๋ฒ ๋ช ๋ น์ด๋ฅผ ์ณ๋ณด์.
SELECT * FROM usertb1;
์ด ๋ช
๋ น์ด๋ usertb1๋ก๋ถํฐ (FROM) ๋ชจ๋ ๋ฐ์ดํฐ(*)๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋ค(SELECT)๋ ๋ป์ด๋ค.
์ฐธ๊ณ ๋ก sql๋ฌธ์ ๋์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ์๋๋ค.
๊ทธ๋์ ๋๋ ์ฟผ๋ฆฌ ๋ช
๋ น์ด๋ง ๋๋ฌธ์๋ก ์ฐ๊ณ ์ฐ๋ฆฌ์ ๋ฐ์ดํฐ ๊ด๋ จ๋ ๋ฌธ์๋ ์๋ฌธ์๋ก ์ฒ๋ฆฌํ๋ค.
๊ทธ๋ผ ์ ์์ ์ผ๋ก usertb1์ ์กด์ฌํ๋ ๋ชจ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ๋๋ค.
๋ง์ฝ ์ฌ๊ธฐ์ ํน์ ์นผ๋ผ(name, addr)๋ง ๋ณด๊ณ ์ถ๋ค๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ(*)๊ฐ ์๋๋ผ ํน์ ์นผ๋ผ(name, addr)์ผ๋ก ์ฐ๋ฉด ๋๋ค.
SELECT name, addr
FROM usertb1;
์ ์ํํ๋ฉด usertb1๋ก๋ถํฐ (FROM) ํน์ ์นผ๋ผ์ ๋ชจ๋ ๋ฐ์ดํฐ(name, addr)๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋ค(SELECT)๋ ๋ป์ด๋ค.
์ด ๊ฒ์ ์ผ๋ฐํ ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ SELECT ๋ฌธ์ฅ์ด ๋๋ค.
SELECT ํ๋
FROM ํ
์ด๋ธ๋ช
;
SELECT ์์ WHERE๋ก ์กฐ๊ฑด์ ์ถ๊ฐํ๊ธฐ
๋ง์ฝ ๋ด๊ฐ addr์ด ์์ธ์ธ ์ฌ๋๋ง ๋ณด๊ณ ์ถ๋ค๋ฉด ์ด๋กํ ๊น?
์ด์ ์ฐ๋ฆฌ๋ ์กฐ๊ฑด์ ์ถ๊ฐํด์ผํ ํ์ด๋ฐ์ด ๋ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๊ฐ ์ง์๋ฌธ์ ์กฐ๊ฑด์ ์ถ๊ฐํ๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ง ๊ณจ๋ผ์ ๋ณผ ์ ์๋ค.
์กฐ๊ฑด์ ์ถ๊ฐํ ๋๋ WHERE ์ ์ ์ฌ์ฉํ๋ค.
SELECT ํ๋
FROM ํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด์;
์ฌ๊ธฐ WEHRE์ ๋ค์๋ ํฌ๊ฒ 2๊ฐ์ง ์ฐ์ฐ์๊ฐ ์ฌ ์ ์๋ค.
- ์กฐ๊ฑด ์ฐ์ฐ์
- ๊ด๊ณ ์ฐ์ฐ์
์กฐ๊ฑด ์ฐ์ฐ์
์กฐ๊ฑด ์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐํธ๋ค์ด ์กด์ฌํ๋ค. =, <, >, <=, >=, !=
์กฐ๊ฑด ์ฐ์ฐ์๋ฅผ ํตํด์ addr์ด ์์ธ์ธ ์ฌ๋๋ง ์ถ๋ ฅํ๋ผ
SELECT name, addr
FROM usertb1
WHERE addr = '์์ธ';
๊ด๊ณ ์ฐ์ฐ์
๊ด๊ณ ์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐํธ๋ค์ด ์กด์ฌํ๋ค. OR, AND, NOT
์กฐ๊ฑด ์ฐ์ฐ์์ ๊ด๊ณ ์ฐ์ฐ์๋ฅผ ํตํด ์ด๋ฆ์ด '์ด์น๊ธฐ'๊ฐ ์๋๊ณ addr์ด ์์ธ์ธ ์ฌ๋์ ์ถ๋ ฅํ๋ผ
SELECT name, addr
FROM usertb1
WHERE name != '์ด์น๊ธฐ' AND addr = '์์ธ'
๊ด๊ณ ์ฐ์ฐ์์ ์งํ BETWEEN A AND B
ํค๊ฐ 180 ~ 190์ธ ์ฌ๋์ ์กฐํํด๋ณด์.
์ฌ๊ธฐ๊น์ง ์ ๋ฐ๋ผ์๋ค๋ฉด ๋ฌด๋ฆฌ์์ด ํด๊ฒฐํ ์ ์๋ค.
SELECT name, height
FROM usertb1
WHERE height >= 180 AND height <= 190;
์ด ๋ฌธ์ฅ์ ์ข ๋ ์ง๊ด์ ์ด๊ฒ ํํํ๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก BETWEEN A AND B ๊ตฌ๋ฌธ์ด๋ค.
SELECT name, height
FROM usertb1
WHERE height BETWEEN 180 AND 190;
๊ด๊ณ ์ฐ์ฐ์์ ์งํ IN
๋ง์ฝ ๋ฌธ์ ์์ addr์ด ์์ธ์ด๊ฑฐ๋ ๊ฒฝ๋ถ์ธ ์ฌ๋์ ์กฐํํ๋ผ ๋ผ๊ณ ํ๋ฉด BETWEEN A AND B๋ฅผ ํตํด์ ์กฐํํ ์ ์์๊น?
๋ถ๊ฐ๋ฅํ๋ค.
์ด์ ๋ BETWEEN A AND B๋ ์ฐ์์ ์ธ ๊ฐ์์๋ง ์ฌ์ฉํ ์ ์๋๋ฐ, ํน์ ์ด์ฐ ๊ฐ๋ค์์๋ ์ ์ฉํ ์ ์๋ค.
๊ทธ๋ด ๋ ๋ฐ๋ก IN์ ์ฌ์ฉํ๋ค.
addr์ด ์์ธ์ด๊ฑฐ๋ ๊ฒฝ๋ถ์ธ ์ฌ๋์ ์กฐํํ๋ผ
SELECT name, addr
FROM usertb1
WHERE addr IN('์์ธ', '๊ฒฝ๋ถ');
์ํ๋ ์์๋๋ก ์ ๋ ฌํ๊ธฐ ORDER BY
์ ๋ ฌ ํ๋ฉด ๋ญ๊ฐ ๋ ์ค๋ฅด๋?
์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง ๋๋ ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์์ด ๋ ์ค๋ฅธ๋ค.
์ญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๊ณผ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ด ์กด์ฌํ๋ค.
์ฐ๋ฆฌ๋ ์ง์๋ฌธ์์ ์ด ์ ๋ ฌ ์์๋ฅผ ORDER BY๋ก ํด๊ฒฐํ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ORDER BY์ ์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
SELECT ํ๋
FROM ํ
์ด๋ธ๋ช
ORDER BY ์ ๋ ฌ ๊ธฐ์ค ํ๋;
์ค๋ฆ์ฐจ์์ ASC
ORDER BY๋ฅผ ์ํํ๋ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ด ๋๋ค.
ํค๊ฐ 180 ~ 190์ธ ์ฌ๋์ ์กฐํํ๋๋ฐ, ํค๊ฐ ์์ ์์ผ๋ก ์กฐํํ์.
SELECT name, height
FROM usertb1
ORDER BY height
/* ํน์ */
SELECT name, height
FROM usertb1
ORDER BY height ASC
๋ด๋ฆผ์ฐจ์์ DESC
๋ด๋ฆผ์ฐจ์์ ORDER BY ๋ง์ง๋ง์ ์จ์ฃผ๋ฉด ๋๋ค.
ํค๊ฐ 180 ~ 190์ธ ์ฌ๋์ ์กฐํํ๋๋ฐ, ํค๊ฐ ํฐ ์์ผ๋ก ์กฐํํ์.
SELECT name, height
FROM usertb1
ORDER BY height DESC
์นดํ ๊ณ ๋ฆฌ ์ด๋ณด์๋ ์ค๋นํ๋ SQL ์ฝ๋ฉ ํ ์คํธ์ ๊ฐ์๋ฉด ํด๋น ์๋ฆฌ์ฆ๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋๊ธ