SQL(Structured Querey Language) ์ค์ SELECT ๋ฌธ์ ๋ํด์ ์์๋ณด์.
SELECT
SELECT๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํ SQL ๋ช ๋ น๋ฌธ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ช ๋ น์ด ์ค ํ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉํ๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ ํ์
SELECT [DISTINCT] {*, column[Alias]}
FROM table_name;
๊ธฐ๋ณธ์ ์ธ ํ์์ ์์ ๊ฐ๊ณ []
์ ์๋ต์ด ๊ฐ๋ฅํ ๋ด์ฉ์ ํ์ํ ์ ์๋ค.
SELECT
๋ฌธ์ ํ์์ค ํ์ ๊ตฌ์ฑ ์์๋ SELECT
์ FROM
์ด๋ค.
DISTINCT๋ ์ค๋ณต๋ ์ ์ ์ ๊ฑฐํ๊ณ ์ฌ์ฉํ ๋ ์ฌ์ฉํ๋ฉฐ *
๋งํฌ๋ ๋ชจ๋ ๊ฒ์ ์ถ๋ ฅํ ๋ ์ฌ์ฉ๋๊ณ ํน์ ์นผ๋ผ์ ์ฐธ์กฐํ๊ณ ์ถ์ ๋๋ columnlist
๋ฅผ ์ฌ์ฉํ๋ค. ์๋์์ ์์ธํ ์์๋ณด์.
SELECT ๋ฌธ์ ์ฌ์ฉํด๋ณด์.
๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ `EMP` ํ ์ด๋ธ ์์ ์ ์ฅ๋์ด ์๋ค๊ณ ํ์ ๋ ์๋์ ๋ฌธ๋ฒ์ ์ ์ฉ์์ผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๋ค๋ค๋ณด์.
SELECT [DISTINCT]{* | column[alias]...}
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group condition]
[ORDER BY] column];
SELECT
: DISTINCT๋ฅผ ํตํด์ ์ค๋ณต์ ์ ๊ฑฐํ๋ค. (ํ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด๋ค.)FROM
: ์ง์์์ ํ์๋ก ํ๋ ๋ฆด๋ ์ด์ ์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ฑฐํ๋ค.WHERE
: ํน์ ์กฐ๊ฑด์ ๋ง๋ฌ (WHERE์ ์์ ๋ ๋ค๋ฅธ SELECT๋ฅผ ํฌํจ์์ผ ์ค์ฒฉ ์ง์๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค.)GROUP BY
: ๊ทธ๋ฃนํ ํด์ ์ถ๋ ฅ (ex ๋จ์์ ํ๊ท ํค, ์ฌ์์ ํ๊ท ํค)HAVING
: ๊ทธ๋ฃน์ ๋ํ ์กฐ๊ฑด ์ผ๋ฐ์ ์ผ๋ก GROUP BY์ ํจ๊ป ๋์์ผ ํ๋ค. ๊ทธ๋ฃน์ ๋ํ ์กฐ๊ฑดORDER BY
: ๊ฒ์ ํ ์ ๋ ฌ์ ์ํด ์ฌ์ฉ๋๋ค.
์ฐ์ ์ฐ์ฐ
์ฐ์ ์ฐ์ฐ์ ์ปฌ๋ผ ๊ฐ์ ์ฐ์ ์ฐ์ฐ(+, -, /) ๋ฑ์ ์ ์ฉํ์ฌ ๊ณ์ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ํ์ ์ฐ์ฐ์ ์ฐ์ ์์์ ๋ฒ์น์ด ๋์ผํ๊ฒ ์ ์ฉ๋๋ค.
์ฃผ์ํด์ผํ ์ ์ ์ซ์ ๋๋ ๋ ์ง ํ์ ์ ๋ฐ์ดํฐ์๋ง ์ ์ฉํ ์ ์๋ค.
ํ ์ด๋ธ ๊ฒ์
ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ ์ถ๋ ฅ
์์ ํ
์ด๋ธ ๋ด์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅ ์ํค๊ธฐ ์ํด์ *
๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ค.
SELECT *
FROM emp;
ํ ์ด๋ธ์ ํน์ ์นผ๋ผ ๋ฐ์ดํฐ ์ถ๋ ฅ
*
๋ฌธ์๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถ๋ฌ์๋๋ฐ ๋ง์ฝ ์ด๋ฆ๊ณผ ๊ธ์ฌ์ ๊ดํ ์ ๋ณด๋ง ๋ถ๋ฅด๊ณ ์ถ๋ค?
๊ทธ๋ผ *
๋ฌธ์ ๋์ ์กฐํํ ํ
์ด๋ธ์ column ์ด๋ฆ์ ์จ์ฃผ๋ฉด ๋๋ค.
SELECT ename, job, sal
FROM emp;
์ฐ์ ์ฐ์ฐ์ ์ด์ฉํ์ฌ ๊ธ์ฌ์ ์ถ๊ฐ ์๋น ๊ณ์ฐํ๊ธฐ
SELECT๋ก ๋ฐ์ดํฐ์ ์กฐ์์ด ๊ฐ๋ฅํ๋ค.
๋ฌธ๋ช
์์์ ๋ง ํ๊ธธ SELECT๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋๋ฐ ์ฌ์ฉํ๋ค๊ณ ํ๋๋ฐ ์ด๋ป๊ฒ SELECT๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋? ๋ผ๊ณ ํ ์ ์์ง๋ง
๋ฐ์ดํฐ๋ฅผ ์กฐํํ ํ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ ๋ด์ฉ์ ๋ฟ๋ ค์ฃผ๋ ์๋ฆฌ๋ก ๋ฐ์ดํฐ์ ์กฐ์์ ํ ์ ์๋ค.
์๊ฒฉํ ๋ง์ ํ์๋ฉด ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๊ฒ์ด ์๋๋ผ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๊ฒ ์ฒ๋ผ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ง์ ํ
์ด๋ธ์์ ๊ธ์ฌ ๋ชฉ๋ก์ ๊ฐ์ ธ์ 50์ ๋ํด ์ถ๊ฐ๊ธ์ ๊ณ์ฐํด๋ณด๋ ์ฟผ๋ฆฌ๋ฌธ์ ๋ง๋ค์ด ๋ณด์.
์ฝ๋ค. ๋จ์ง ์์(+, -,/) ์ ์ ๋ ฅํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
NULL์ ๊ฐ๋
์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๊ฐ NULL์ 0 ๋๋ ๋น์ด์์์ ์๋ฏธํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์์์ NULL์ ์๋ฏธ๋ ๊ธฐ์กด์ NULL๊ณผ ๊ฐ์ง๋ง ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ๋๋ค.
- NULL์ด๋ผ๊ณ ํด์ ๊ฐ์ด 0์ด๋ผ๋ ๊ฒ์ด ์๋๋ค.
- ํด๋น ๊ฐ์ด ํ์ ์ด ๋ถ๊ฐ๋ฅํจ์ ๋ปํ๋ค.
- ๊ฐ์ด ํ์ ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ, ํ ๋น, ๋น๊ต๊ฐ ๋ถ๊ฐํ๋ค.
๋ค์ ๋ชจ๋ ํ
์ด๋ธ์ ์กฐํํด๋ณด๋ฉด comm
์ด๋ผ๋ ์นผ๋ผ์ ์๋์ ๊ฐ์ด NULL ๊ฐ์ด ์๋ ํญ์ด ์๋ค.
์ด๋ฌํ ๊ฐ๋ค์ ์ฐ์ฐ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅ ํ๊ธฐ ๋๋ฌธ์ 0์ด๋ผ๋ ๊ฐ์ผ๋ก ๋ฐ๊พธ๊ฑฐ๋ ๋ค๋ฅธ ์กฐ์น๋ฅผ ์ทจํด์ผ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ฌํ ๋ถํธํจ์ ์ํด NVL ํจ์๊ฐ ์กด์ฌํ๋ค.
NULL์ ๋ถํธํจ์ ํด์ํด์ค NVLํจ์
NVL ํจ์๋
NVL(expression1, expression2)
๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.
- expression1 : NULL ์ ํฌํจํ๋ ์นผ๋ผ ๋๋ ํํ์
- expression2 : NULL ๊ฐ์ ๋์ฒดํ ๋ค๋ฅธ ๊ฐ
์ฃผ์ : expression1, expression2 ๋ ๋ฐ๋์ ๋์ผํ ๋ฐ์ดํฐ ํ์ ์ด์ด์ผ ํ๋ค.
NULL์ด ์กด์ฌํ๋ ์นผ๋ผ์ ์ฐ์ ์ฐ์ฐ ์์ผ sal์ ํฉ์ณ๋ณด๋ฉด sal์
์์ ๊ฐ์ด NULL๋ก ์ถ๋ ฅ์ด ๋๋ค.
์ด์ ์ฐ๋ฆฌ๊ฐ ๋ฐฉ๊ธ ๋ฐฐ์ ๋ NVL์ ์ฌ์ฉํด์ null์ด ์๋๋ผ 0์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ์์ฑํ์ฌ ๊ฐ์ ๊ณ์ฐํด๋ณด์.
์ง์
์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ด ๋์ค๊ฒ ๋์๋ค.
column์ ์ด๋ฆ์ ๋ถํ์ฃผ๋ as ํค์๋
์์ ๊ฐ์ด ์ฐ๋ฆฌ๊ฐ ๊ฒ์ํ ๊ฒ๋ค์ด ename, sal, comm
ํ์์ผ๋ก ๋์ค๋ฉด ๊ตฌ๋ถํ๊ธฐ ํ๋ค ๋๊ฐ ์๋ค.
์ด๋ฐ ํ๋ ์ ์ ํด์ํ๊ธฐ ์ํด์ as ํค์๋๊ฐ ์กด์ฌํ๋ค.
SELECT column_name as ๋ณ์นญ
FROM EMP;
๋ฐฑ๋ฌธ์ด ๋ถ์ฌ์ผ๊ฒฌ ํ ๋ฒ ๋ด๋ณด์.
์ด์ ๊ตฌ๋ถํ๊ธฐ ์ฌ์์ก๋ค!!
์ถ๊ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ๋์๋ฌธ์ ๊ตฌ๋ณ ๋๋ ํน์๋ฌธ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ""
๋ก ๋ฌธ์์ด์ ๋ฌถ์ด์ฃผ๋ฉด
์ด๋ ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
๋ค์ ์๊ฐ์๋ WHERE์ GROUP BY ๋ฑ ๋จ์ SELECT ๋ฌธ์ ์ฌ์ฉ๋ฒ์ ๋ํด์ ์์๋ณด์!
๋๊ธ