์นดํ ๊ณ ๋ฆฌ ์ด๋ณด์๋ ์ค๋นํ๋ SQL ์ฝ๋ฉ ํ ์คํธ์ ๊ฐ์๋ฉด ํด๋น ์๋ฆฌ์ฆ๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค.
- ํด๋น ์๋ฆฌ์ฆ๋ฅผ ์์ํ๋ฉฐ
- ๊ธฐ์ด ์ด๋ก ๋ค์ง๊ธฐ
- ์ด๋ณด์๋ ์ค๋นํ๋ SQL ์ฝ๋ฉ ํ ์คํธ ์๋ฆฌ์ฆ๋ฅผ ๋ง์น๋ฉฐ ๋ถ์ -์ด์ ๋ญ ํด์ผ ํ๋์?
๋ชฉ์ฐจ
- ์ค๋ณต ์ฒ๋ฆฌ
- DISTINCK์ GROUP BY
- NULL ์ฒ๋ฆฌ
- IS NULL
- IS NOT NULL
์ค๋ณต ์ฒ๋ฆฌ
์ค๋ณต์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์๋ค.
DISTINCT
GROUP BY
๋ง๊ฐ์ ์ด์ฉํ TMI
์ค๋ณต์ ์ฒ๋ฆฌํ ๋๋ ๊ต์ฌ์์ ๋ณดํต DISTINCT๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ํ๋ค.
DISTINCT ์์ฒด๊ฐ ์๋ ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ์ํด์ ๋์จ ๊ฒ์ด๊ธฐ๋ ํ๊ณ ๊ตฌํํ๊ธฐ ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ ๋ง์ด ์ฌ์ฉ๋๋ค.
ํ์ง๋ง DISTINCT๋ Temp Tablespace์ ์์๋ก ์ ์ ํ๋ ๋ฐฉ์์ด๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถํ๋ฅผ ์ค ์ ์๋ค๊ณ ํ๋ค.
์ฐ๋ฆฌ๋ ์ง๊ธ SQL์ ์ฝ๋ฉํ ์คํธ๋ฅผ ์ํด ๋ฐฐ์ฐ๊ณ ์๊ธด ํ์ง๋ง, ์ํํธ์จ์ด ์์ง๋์ด๊ฐ ๋๊ธฐ ์ํด SQL ์ฝ๋ฉ ํ ์คํธ๋ฅผ ๋ณด๋ ๊ณผ์ ์ด๋ ์์ ๊ฐ๋จํ ์ง์ ์ ๋๋ ๊ธฐ์ตํด๋ ์ข์ ๊ฒ ๊ฐ๋ค.
DISTINCT๋ก ๋์๊ฐ์
์ฐ๋ฆฌ์ usertb1์ ๋ชจ๋ ์ถ๋ ฅํด๋ณด์.
SELECT *
FROM usertb1;
๊ทธ๋ผ ์์ ๊ฐ์ด ์ฌ๋๋ค์ ํค๊ฐ ์ค๋ณต๋๋ค.
์ด ํค๋ฅผ ์ค๋ณต ์์ด ์ถ๋ ฅํ๊ณ ์ถ์ ๋ ๋ฐ๋ก distinct๋ฅผ ์ฌ์ฉํ๋ค.
SELECT DISTINCT height
FROM usertb1;
์์ ๊ฐ์ด ์ฒ๋ฆฌํ๋ค๋ฉด ์ค๋ณต์ด ์ ๊ฑฐ๋ ๊ฐ๋ค์ ํ์ธํ ์ ์๋ค.
๋ง์ฝ ์ฌ์ฉ์์ ํค๊ฐ ๋ช์ด ์๋์ง ์๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ฉด ์ด๋กํ ๊น?
์๋ฅผ ๋ค์ด ํค๊ฐ
170, 180, 190 ์ด ์๋ค๋ฉด ํค๋ ์ด 3๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
์ด๋ฅผ ํ์ธํ๋ ค๋ฉด ์ด๋ค ์ฟผ๋ฆฌ๋ฅผ ์ง์ผํ ๊น?
์ฌ์ฉ์ ํค๋ ๋ช๊ฐ์ง๊ฐ ์๋์ง ์ถ๋ ฅํ๋ผ.
SELECT count(height)
FROM usertb1;
์ด๋ ๊ฒ ์ง ๋ค๋ฉด ์ค๋ณต๋๋ ํค ๋ชจ๋๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ ์ ๋ต์ด ๋ ์ ์๋ค.
๋์ ์ด๋ ๊ฒ ์ง ๋ค๋ฉด ์ด๋จ๊น?
SELECT count(DISTINCT height)
FROM usertb1;
์ด๋ ๊ฒ ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ค๋ฉด ์ค๋ณต๋ ํค๋ฅผ ์ ๊ฑฐํ๊ณ count ํ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ต์ด ๋์ฌ ์ ์๊ฒ ๋๋ค.
NULL ์ฒ๋ฆฌ
๋ค์ ํ ๋ฒ ์ฐ๋ฆฌ์ buytb1์ ๋ชจ๋ ์ถ๋ ฅํด๋ณด์.
SELECT *
FROM buytb1;
๋ณด์ด๋ค ์ถ์ด groupname
์ ํน์ ์นผ๋ผ๋ค์ NULL์ด ๋ค์ด๊ฐ ์๋ค.
์ด NULL ๊ฐ๋ค์ด ์๋ ์นผ๋ผ๋ง ๋ณด๊ณ ์ถ์ ๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
๊ทธ๋ ๋ค WHERE ์ ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
SELECT *
FROM buytb1
WHERE groupname = NULL
์ ๋ญ๊ฐ ์ด์ํ๋ค.
์ฟผ๋ฆฌ๋ฌธ์ด ์คํ์ด ๋๊ธด ํ์ง๋ง ์๋ฌด๊ฒ๋ ์ถ๋ ฅ๋์ง ์๋๋ค.
์ด์ ๋ NULL์ ๋ญ๊น๋ฅผ ์๊ฐํด๋ณด๋ฉด ์ ์ ์๋ค.
null์ ์ฌ์ค 0์ด๋ผ๊ณ ์๊ฐํ ์ ์๋๋ฐ, 0์ด ์๋๋ผ ์์์ ์๋ฏธ์ ๊ฐ๊น๋ค.
๊ทผ๋ฐ ์ฐ๋ฆฌ๊ฐ ์์์ ํ ๊ฒ์ =
์ด๋ผ๋ ์ฐ์ ์ฐ์ฐ์ ์ํํ๋ ค๊ณ ํ๋ค.
์๋ฌด ๊ฒ๋ ์์์ ์ฐ์ ์ฐ์ฐ์ ํ ์ ์์๊น?
๊ทธ๋ ๋ค. NULL์ ๊ฐ์ด๋ผ๊ณ ๋ณด์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅ ํ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ฐ๋ฆฌ๋ NULL ์ฒ๋ฆฌ๋ฅผ ํ ์ ์์๊น?
์ด ๋ MySQL Null ์ฒ๋ฆฌ ๋ด์ฅ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ NULL ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
IS NULL
ํด๋น ์นผ๋ผ์ด NULL์ธ ๊ฒฝ์ฐ์ ์กฐ๊ฑด์ IS NULL
๋ก ํ์ธํ ์ ์๋ค.
SELECT *
FROM buytb1
WHERE groupname IS NULL
IS NOT NULL
ํด๋น ์นผ๋ผ์ด NULL์ด ์๋ ๊ฒฝ์ฐ์ ์กฐ๊ฑด์ IS NOT NULL
๋ก ํ์ธํ ์ ์๋ค.
SELECT *
FROM buytb1
WHERE groupname IS NOT NULL
์นดํ ๊ณ ๋ฆฌ ์ด๋ณด์๋ ์ค๋นํ๋ SQL ์ฝ๋ฉ ํ ์คํธ์ ๊ฐ์๋ฉด ํด๋น ์๋ฆฌ์ฆ๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋๊ธ