์นดํ ๊ณ ๋ฆฌ ์ด๋ณด์๋ ์ค๋นํ๋ 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 ์ฝ๋ฉ ํ ์คํธ์ ๊ฐ์๋ฉด ํด๋น ์๋ฆฌ์ฆ๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋๊ธ