MySQL์์ SQL ๋ฌธ์ฅ ๊ฐ๋ ์ฑ ํฅ์์ํค๋ ๋ฒ
MySQL์์ SQL ๋ฌธ์ฅ ๊ฐ๋ ์ฑ ํฅ์์ํค๋ ๋ฒ ๊ด๋ จ
IT ์ง์์ด ๋ฌด์๋ณด๋ค ์ค์ํด์ง ์์ฆ, ์ฌ๋ฌ๋ถ์ ์ด๋ป๊ฒ ๊ณต๋ถํ๊ณ ์๋์? ๊ฐ์ฅ ๋จผ์ ๋๊ธธ์ด ๊ฐ๋ ๊ฑด ๋ค์ํ IT ๊ฐ์ ์์์ผ ๊ฒ๋๋ค. ๊ฐ์๋ฅผ ์ ๊ณตํ๋ ๊ต์ก ๊ธฐ์ ๋ค๊ณผ ํจ๊ป, ์์ฆIT์์ โIT ๊ฐ์ ์๋ฆฌ์ฆโ๋ฅผ ์ค๋นํ์ต๋๋ค. ์์ ํ ๊ต์ก ์์์ TEXT๋ก ์ฝ๊ณ ํ์ํ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ์ ธ๊ฐ์ธ์.
์ด๋ฒ ๊ฐ์๋ โReal MySQLโ์ ๋๋ค. ๋น๊ทผ๋ง์ผ ์ธํ๋ผ์ค DBํ์์ DBA๋ก ๊ทผ๋ฌดํ๋ ์ด์ฑ์ฑ, ๋ฐฑ์๋น ๋์ด ๊ฐ์๋ฅผ ๋งก์์ต๋๋ค. MySQL 8.0 ๋ฒ์ ์ ์ค์ฌ์ผ๋ก ์ค๋ฌด์ ๋ฐ๋ก ์ ์ฉํ ์ ์๋ MySQL ํ์ฉ๋ฒ์ ๋ค๋ฃจ๊ณ ์์ฃ . ์ ์ฒด ์์์ ์ธํ๋ฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
Real MySQL ์๋ฆฌ์ฆ
CHAR
vs. VARCHAR
, ์ธ์ ์ด๋ป๊ฒ ์จ์ผ ํ ๊น? | ์์ฆITCHAR
vs. VARCHAR
, ์ธ์ ์ด๋ป๊ฒ ์จ์ผ ํ ๊น?VARCHAR
vs. TEXT
, ๋ญ๊ฐ ๋ค๋ฅผ๊น? | ์์ฆITVARCHAR
vs. TEXT
, ๋ญ๊ฐ ๋ค๋ฅผ๊น?์ด๋ฒ ๊ธ์์๋ MySQL์์ SQL ์ฟผ๋ฆฌ๋ฌธ์ ์ฌ์ฉํ ๋ ๊ฐ๋ ์ฑ์ ํฅ์์ํค๊ธฐ ์ํ ๋ช ๊ฐ์ง ๋ฐฉ์์ ์ดํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ฌ๊ธฐ์ โ๊ฐ๋ ์ฑโ์ ๋จ์ํ ์ฟผ๋ฆฌ๊ฐ ๋์ ๋ณด๊ธฐ ์ข์ ํํ๋ก ์์ฑ๋ ๊ฒ์ ์๋ฏธํ๋ ๊ฒ์ด ์๋๋ผ, ์ด๋ค ์๋๋ก ์ฌ์ฉํ๋ ค๋ ๊ฑด์ง ์๊ธฐ ์ฝ๊ฒ ์์ฑ๋์ด ์๋ค๋ ์๋ฏธ๋ก ๋ด์ฃผ์๋ฉด ๋ฉ๋๋ค. ๊ฐ๋ ์ฑ์ ํนํ ์ ๋ฌด ์ ์ปค๋ฎค๋์ผ์ด์ ์ธก๋ฉด์์ ์ค์ํ ๋ถ๋ถ์ธ๋ฐ์. ๊ฐ๋ ์ฑ์ ๋์ด๋ ๋ฐฉ๋ฒ์ ๋ฏธ๋ฆฌ ์์งํ๊ณ ์์ผ๋ฉด, ๋ง์ ๋์์ด ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๊ฐ๋ ์ฑ์ ์ค์์ฑ
๋จผ์ ๊ฐ๋ ์ฑ์ ์ค์์ฑ๋ถํฐ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋ ๊ฐ๋ ์ฑ์ ๊ณ ๋ คํ๋ ๊ฒ์ ์ ์ค์ํ ๊น์? ๋จผ์ ๊ฐ๋ ์ฑ์ด ๋์ผ๋ฉด ์ฟผ๋ฆฌ์ ์์ฑ ์๋๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฟผ๋ฆฌ๋ฅผ ์ดํดํ๋ ๋ฐ ๋๋ ์๊ฐ์ด ๋จ์ถ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๋ก ์ธํด ์ปค๋ฎค๋์ผ์ด์ ๋น์ฉ์ด ์ค๊ณ , ์ ๋ฌด ์งํ ์๋๊ฐ ๋นจ๋ผ์ง ์ ์์ฃ . ์์ฐ์ฑ ๋ํ ์ฆ๋๋ ์ ์๊ณ ์. ๋ํ ๊ฐ๋ ์ฑ ๋์ ์ฟผ๋ฆฌ๋ ๋์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํด๋, ๋น ๋ฅธ ๋๋ฒ๊น ๊ณผ ์์ ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ์ค์๋ฅผ ๊ฐ์์ํต๋๋ค. ์ฆ, ๋ฌธ์ ๊ฐ ๋ฐ์ํ ํ๋ฅ ์ ์ค์ฌ์ฃผ๊ณ , ๋ง์ฝ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค ํ๋๋ผ๋ ์์ ์ ์๋ชจ๋๋ ์๊ฐ์ ๋จ์ถ์์ผ์ค๋๋ค. ๋จ์ ์๊ฐ์ ๋ค๋ฅธ ์ผ์ ๋ ํฌ์ํ ์ ์์ฃ . ๋ํ ์ด์ ๊ฐ์ ์ฅ์ ๋๋ถ์, ์ฅ๊ธฐ์ ์ผ๋ก๋ ํด๋น ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์์คํ ์ ์ ์ง ๋ณด์ ๋น์ฉ๋ ์ค์ด๋ ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
์ด์ฒ๋ผ ๊ฐ๋ ์ฑ์ ๋จ์ํ ๋ณด๊ธฐ ์ข๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋์ด, ํจ๊ณผ์ ์ธ ์ปค๋ฎค๋์ผ์ด์ , ํฅ์๋ ์ ๋ฌด ํจ์จ, ๊ทธ๋ฆฌ๊ณ ๋ฎ์ ์ ์ง๋ณด์ ๋น์ฉ์ผ๋ก ์ด์ด์ง๋ ์ค์ํ ์์๊ฐ ๋ฉ๋๋ค. ๋ฐ๋ผ์ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋๋ ํญ์ ๊ฐ๋ ์ฑ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์ด์ ๊ฐ๋ ์ฑ์ ๋์ด๋ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ์์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
SQL ๋ฌธ์ฅ ๊ฐ๋ ์ฑ์ ๋์ด๋ ค๋ฉด?
์ฒซ ๋ฒ์งธ๋ก DISTINCT
๋ฅผ ํจ์์ฒ๋ผ ์ฌ์ฉํ๋ ํํ๋ ์ง์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. DISTINCT
๋ ํจ์๊ฐ ์๋์๋ ๋ถ๊ตฌํ๊ณ , ๊ดํธ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์๋๋ฐ์. ๊ดํธ์ ํจ๊ป ์ฌ์ฉํ๋ค ํ๋๋ผ๋ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ผํฉ๋๋ค. ๊ทธ๋์ ๊ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ค์ ์ฟผ๋ฆฌ์๋ ๋ค๋ฅธ ์๋๋ก ๋ณด์ผ ์ ์๋๋ฐ์. ์ถ๊ฐ๋ก ๋ ํ์ํ ๋ถ๋ถ์ด ์๋ ๊ฑด์ง, ์๋๊ฐ ๋ถ๋ถ๋ช
ํ ๋ถ๋ถ์ด ์์ด ๊ดํธ๊ฐ ์๋ ํํ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ๊ณ ํฉ๋๋ค.
์ ์์ ์ฟผ๋ฆฌ๋ค์ ๋ณด๋ฉด, ์ผ์ชฝ๊ณผ ๊ฐ์ด ๊ดํธ๋ฅผ ๋ฃ์ด์ ์ฌ์ฉํ๋ ํํ์ ์ค๋ฅธ์ชฝ ์ฟผ๋ฆฌ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ผํฉ๋๋ค. ๋ํ MySQL์์๋ ์ผ์ชฝ์ฒ๋ผ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋๋ผ๋, ์๋์ผ๋ก ์ค๋ฅธ์ชฝ๊ณผ ๊ฐ์ ํํ๋ก ๋ณ๊ฒฝํด์ ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค. ๊ทธ๋์ ์ค๋ฅธ์ชฝ ์์์ ๊ฐ์ด ๊ดํธ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ํํ๋ก, ์ฌ์ฉ ์๋๋ฅผ ๋ช ํํ ํ ์ ์์ด ์ฟผ๋ฆฌ์ ๊ฐ๋ ์ฑ๋ ๋์์ง๋๋ค.
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ LEFT JOIN
์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค์ํ๊ณ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. LEFT JOIN
์ฌ์ฉ ์ LEFT JOIN
์ JOIN ๋์ ํ
์ด๋ธ, ์ฆ LEFT JOIN
์ค๋ฅธ์ชฝ์ ์๋ ๋๋ฆฌ๋ธ ํ
์ด๋ธ์ ๋ํ ์กฐ๊ฑด์ WHERE
์ ์ ๋ช
์ํ ๊ฒฝ์ฐ์๋ INNER JOIN
์ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋ ์ ์์ต๋๋ค.
๊ทธ๋์ ์ค์ ๋ก ์๋ํ ๊ฒ LEFT JOIN
์ ์ฌ์ฉํ๋ ๊ฑฐ๋ผ๋ฉด, ๋๋ฆฌ๋ธ ํ
์ด๋ธ์ ๋ํ ์กฐ๊ฑด์ WHERE
์ ์ด ์๋ ON ์ ์ ๋ช
์ํด ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ์๋ ์๋ํ ๊ฒ INNER JOIN
์ ์ฌ์ฉํ๋ ๊ฑฐ์๋ค๋ฉด, WHERE
์ ์ ์กฐ๊ฑด์ ๋ช
์ํด๋ ์๊ด์์ต๋๋ค. ๋ค๋ง ์ด ๊ฒฝ์ฐ์๋ LEFT JOIN
ํค์๋๊ฐ ์๋ INNER JOIN
์ผ๋ก ๋ช
ํํ๊ฒ ๋ณ๊ฒฝํด ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ LEFT JOIN
์ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด, LEFT JOIN
ํ๋ ๋ ํ
์ด๋ธ์ด ์๋ก 1:1 ๊ด๊ณ์ผ ๋, ์ฟผ๋ฆฌ์์ LEFT JOIN
ํ๋ฉด์ ์กฐ์ธ ์ผ์ชฝ์ ์์นํ ๋๋ผ์ด๋น ํ
์ด๋ธ์ ์ํด ์๋ ์ปฌ๋ผ๋ค๋ง ์กฐํํ๊ฑฐ๋ ๋๋ COUNT๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๊ตณ์ด LEFT JOIN
์ ์ํํ ํ์๊ฐ ์์ผ๋ฏ๋ก, ์ ๊ฑฐํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋
์ฑ๋ฟ๋ง ์๋๋ผ ์ฑ๋ฅ์ ์ธ ์ธก๋ฉด์์๋ ์ข์ต๋๋ค.
๋ฐฉ๊ธ ๋งํ ๋ด์ฉ์ ๋ํด ๊ฐ๋จํ๊ฒ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด, DB์ ์ ์ ์ ๋ณด๊ฐ ์ ์ฅ๋๋ user ํ
์ด๋ธ๊ณผ ์ ์ ๋ค์ ์์ฑ๊ฐ์ ์ ์ฅํ๋ user_attribute
ํ
์ด๋ธ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณผ๊ฒ์.
user ํ
์ด๋ธ์๋ id๊ฐ PK ์ปฌ๋ผ์ผ๋ก ๋์ด ์๊ณ , user_attribute
ํ
์ด๋ธ์๋ user_id์ name, ์ด ๋ ๊ฐ์ ์กฐํฉ์ผ๋ก ํ๋ผ์ด๋จธ๋ฆฌ ํค๊ฐ ๊ตฌ์ฑ๋์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ ์ ํ
์ด๋ธ์ ์ ์ ๋ชฉ๋ก์ ์ ์ฒด ๋ค ์กฐํํด์ผ ํ๋๋ฐ, ๋ง์ฝ ์ฃผ์ ์ ๋ณด๋ฅผ ์
๋ ฅํ ์ ์ ๊ฐ ์๋ค๋ฉด ๊ทธ ์ ๋ณด๋ ํจ๊ป ์ถ๋ ฅ๋๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค๊ณ ํด๋ณผ๊ฒ์.
์ฐ์ ์ผ์ชฝ์ ๋์ ์๋ ์ฟผ๋ฆฌ๋ค ์ค์ ์ฒซ ๋ฒ์งธ ์ฟผ๋ฆฌ๋ถํฐ ์ดํด๋ณด๋ฉด, user์ user_attribute
ํ
์ด๋ธ์ LEFT JOIN
์ ์ฌ์ฉํด์ ์กฐ์ธํ๊ณ , ์ค์ ๊ฐ์ ธ์ฌ ์์ฑ์ธ ์ฃผ์๊ฐ์ ํด๋นํ๋ ์กฐ๊ฑด์ WHERE ์ ์ ์ฌ์ฉํ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ์คํํ๊ฒ ๋๋ฉด ์ค์ user์ user_attribute
ํ
์ด๋ธ์ ์กฐ์ธํ ๊ฒฐ๊ณผ์์, user_attribute
ํ
์ด๋ธ์ name ์ปฌ๋ผ์ ๊ฐ์ด โaddressโ์ธ ๋ฐ์ดํฐ๋ค๋ง ํํฐ๋งํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ฐ๋ก ๋ฐ์ ๋์ ์๋ INNER JOIN
์ฟผ๋ฆฌ์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์๋ ์๋์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋๊ณ , ๋ LEFT JOIN
์ ์ ๋๋ก ์ฌ์ฉํ ๊ฒ ์๋๋๋ค. ๊ทธ๋์ LEFT JOIN
์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๊ทธ๋ฆผ์ ์ ์ผ ๋ฐ์ ๋์ ์๋ ์ฟผ๋ฆฌ์ฒ๋ผ ON ์ ์ ์์ฑ ์ด๋ฆ ์กฐ๊ฑด์ ๋ช
์ํด ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฆผ์์ ์ค๋ฅธ์ชฝ์ ์๋ ์ฟผ๋ฆฌ๋ค์ ๋ณด๋ฉด ๋์ผํ ์กฐ๊ฑด์ด์ง๋ง, SELECT ์ ์๋ ๋๋ผ์ด๋น ํ
์ด๋ธ์ธ user
ํ
์ด๋ธ์ ์๋ ์ปฌ๋ผ๋ง ๋ช
์๋๊ณ , ๋ COUNT
ํจ์๋ฅผ ์ฌ์ฉํ ์ฟผ๋ฆฌ๊ฐ ์๋ ๊ฒ์ ์ ์ ์๋๋ฐ์. ์ด ๊ฒฝ์ฐ์๋ ์ค์ user
ํ
์ด๋ธ๊ณผ user_attribute
ํ
์ด๋ธ์ LEFT JOIN
ํ ๊ฒฐ๊ณผ๊ฐ user
ํ
์ด๋ธ๋ง ์กฐํํ ๊ฒฝ์ฐ์ ๋์ผํ๊ธฐ ๋๋ฌธ์, ๊ตณ์ด LEFT JOIN
์ด ํ์ํ์ง ์์ต๋๋ค. ๊ทธ๋์ ๋ถํ์ํ ๋ถ๋ถ์ด๋ผ๊ณ ํ ์ ์์ฃ .
๊ทธ๋์ LEFT JOIN
์ด ์ด์ ๊ฐ์ ํํ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ์๋ ์ฟผ๋ฆฌ์์ LEFT JOIN
์ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ๋ ๋์์ด ๋ฉ๋๋ค. ์ด ๋ถ๋ถ๋ ์ฐธ๊ณ ํด์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ธ ๋ฒ์งธ๋ก๋ ORDER BY
์ ์์ด LIMIT
๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ํํ๋ ์ง์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฟผ๋ฆฌ์์ ORDER BY
์ ์์ด LIMIT
์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์๋๋ฐ์. ํนํ ์ฟผ๋ฆฌ์์ ๊ฒฐ๊ณผ๋ก ๋ฐํ๋๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๊ฑด์ธ ๊ฒฝ์ฐ์๋ ๋ฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์์ธกํ ์ ์์ต๋๋ค. ๋ํ ์ด๋ค ์๋๋ก ์ด๋ ๊ฒ ์ฌ์ฉ๋ ๊ฑด์ง ์๋๋ฅผ ํ์
ํ๊ธฐ ์ด๋ ค์์ง์ฃ .
๊ทธ๋์ LIMIT
์ ์ด ๋ถํ์ํ ๋ถ๋ถ์ด๊ฑฐ๋, ํน์ ์๋ํ์ง ์๊ฒ ์ถ๊ฐ๋ ๋ถ๋ถ์ด๋ผ๋ฉด ๋ช
ํํ๊ฒ ์ ๊ฑฐํด ์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ง์ฝ ํ์ด์ง๋ค์ด์
์ฒ๋ฆฌ๋ฅผ ์ํด LIMIT
์ ์ฌ์ฉํ๋ค๋ฉด, ์ ๋ ฌ ๊ธฐ์ค์ด ๋ฐ๋์ ํฌํจ๋๋ ๊ฒ ๋ง๊ธฐ ๋๋ฌธ์ ORDER BY
์ ์ ๋ช
์ํด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ค์์ผ๋ก ๊ทธ๋ฃนํ์ ํ ๋ FULL GROUP BY
ํํ๋ก ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. FULL GROUP BY
ํํ๋ GROUP BY
์ ์ ์ฌ์ฉํ ์ฟผ๋ฆฌ์์ SELECT
์ ์, GROUP BY
์ ์ ๋ช
์๋ ์ปฌ๋ผ์ด๋ ์ง๊ณ ํจ์๋ฅผ ์ฌ์ฉํ ์ปฌ๋ผ๋ง ๋ช
์ํ๋ ๊ฒ์ ๋งํฉ๋๋ค. SELECT
~ GROUP BY
์ฟผ๋ฆฌ์์ GROUP BY
์ ์ ๋ช
์๋์ง ์์ ์ปฌ๋ผ์, ์ง๊ณ ํจ์ ์์ด SELECT
์ ์ ๋ช
์ํด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์ข
์ข
๋ณผ ์ ์๋๋ฐ์.
๋ฐ๋ก ์ ์์์์ ์ผ์ชฝ์ ์๋ ์ฟผ๋ฆฌ์ ๊ฐ์ ํํ๋ก ์ฌ์ฉ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ํด๋น ์ปฌ๋ผ์ ๊ทธ๋ฃนํ ๊ธฐ์ค ์ปฌ๋ผ์ด ์๋๋ค ๋ณด๋, ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ์๋์น ์์ ๊ฐ์ด ๊ฒฐ๊ณผ๋ก ๋ฐํ๋ ์ ์์ต๋๋ค.
๋ํ ์ด๋ค ์ด์ ๋ก ์ด๋ ๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ฒ ๋ ๊ฑด์ง, ์๋๋ฅผ ๋ช ํํ๊ฒ ์ ์ ์๋๋ฐ์. ๋ฐ์ดํฐ์ ์ ํ์ฑ์ ๋ณด์ฅํ๊ณ , ์๋์ ๋ง๊ฒ ์์ธก ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ ์ ์๋๋ก ์ค๋ฅธ์ชฝ ์ฟผ๋ฆฌ์ ๊ฐ์ด ์ ์ ํ ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ํ ๋ถํ์ํ ์ปฌ๋ผ์ด๋ผ๋ฉด, ์ฟผ๋ฆฌ์์ ์ ๊ฑฐํ๊ฑฐ๋ ๋ง์ฝ ์ด๋ค ๊ฐ์ด ๋ฐํ๋์ด๋ ํฌ๊ฒ ์๊ด์๋ ๊ฒฝ์ฐ๋ผ๋ฉด, ANY_VALUE()
๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํด ๋ณด์ธ์. ๋จ์ํ ์ปฌ๋ผ๋ง ๋ช
์ํ๋ ๊ฒ๋ณด๋ค๋ ๊ฐ๋
์ฑ ์ธก๋ฉด์์ ํจ์ฌ ๋ ๋์ ์ ํ์ผ ๊ฒ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ MySQL์์๋ SQL ๋ชจ๋ ์ค์ (sql_mode)์ ํตํด FULL GROUP BY
ํํ๋ก๋ง ์ฟผ๋ฆฌ๊ฐ ์ํ๋๋๋ก ๊ฐ์ ํ ์ ์๋๋ฐ์. FULL GROUP BY
๋ชจ๋๋ SQL ๋ชจ๋ ์ค์ ์ ๊ธฐ๋ณธ์ผ๋ก ํฌํจ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ SQL ๋ชจ๋ ์ค์ ์ ์ง์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด, ๊ธฐ๋ณธ์ ์ผ๋ก FULL GROUP BY
ํํ๋ก๋ง ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์๋ฐ์ ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๊ทธ๋ ์ง๋ง SQL ๋ชจ๋ ์ค์ ์ FULL GROUP BY
๋ชจ๋๊ฐ ์ง์ ๋์ง ์์ ํ๊ฒฝ์ด๋ผ๋ฉด, ๊ทธ๋ฆผ์ ์ผ์ชฝ๊ณผ ๊ฐ์ด FULL GROUP BY
ํํ๊ฐ ์๋ ์ฟผ๋ฆฌ๋ ์ ์์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฟผ๋ฆฌ ์์ฑ ์ ์ด์ ๊ฐ์ ๋ถ๋ถ์ ๊ณ ๋ คํด, ๊ฐ๋
์ฑ์ด ๋์ FULL GROUP BY
ํํ๋ก ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ค์์ผ๋ก ์ฟผ๋ฆฌ์ WHERE
์ ์์ AND
์ OR
์กฐ๊ฑด์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณผ๊ฒ์. ํ์ค SQL์์ AND
์ฐ์ฐ์๋ OR
์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ต๋๋ค. ๊ทธ๋์ ๊ดํธ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ AND
์ฐ์ฐ์๋ฅผ ์ฐ์ ํด์ ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆผ์์ 3๊ฐ์ ์์๊ฐ ๋์ ์๋๋ฐ์. ์ผ์ชฝ๋ถํฐ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฐ์ ์ฒซ ๋ฒ์งธ๋ก SELECT 1 OR 0 AND 0
์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด, ๊ฒฐ๊ณผ๋ก 1์ด ๋ฐํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ฆ, ๋ค์ ์๋ AND
์ ์ด ๋จผ์ ์ฒ๋ฆฌ๋ ํ ๊ทธ๋ค์์ OR
์ฐ์ฐ์ด ์ํ๋์ด 1์ด ์ถ๋ ฅ๋ ๊ฒ์
๋๋ค. ๋ ๋ฒ์งธ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ฉด AND
์ ์ด ๊ดํธ๋ก ๋ฌถ์ฌ์๊ณ , ์ฒซ ๋ฒ์งธ ์ฟผ๋ฆฌ์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์จ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ธ ๋ฒ์งธ๋ OR
๋ถ๋ถ์ ๊ดํธ๋ก ๋ฌถ์ด์ ์คํํ๋๋ฐ, ์ด ๊ฒฝ์ฐ์๋ ๊ฒฐ๊ณผ๊ฐ 0์ผ๋ก ์ถ๋ ฅ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ผ ์ฒ์ ๋งํ ๊ฒ์ฒ๋ผ AND
์ฐ์ฐ์๊ฐ OR
์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๊ธฐ ๋๋ฌธ์, ๊ดํธ๊ฐ ์๋ ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์ AND
์ ์ ๊ดํธ๋ก ๋ฌถ์ ๋ ๋ฒ์งธ ๊ฒฝ์ฐ์์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ฌผ๋ก ์ฐ์ฐ์ ์ฐ์ ์์๋ฅผ ๋ช ํํ๊ฒ ์๊ณ ์์ด์, ๊ดํธ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ํ์ง๋ง ๊ดํธ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ, ํนํ ์ฟผ๋ฆฌ์ ์กฐ๊ฑด์ด ๋ค์ํ๊ฒ ์ถ๊ฐ๋ ์๋ก ํ๋์ ์ฟผ๋ฆฌ์ ์์ฑ ์๋๋ฅผ ํ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด๋ ์ค์๊ฐ ๋ฐ์ํ ํ๋ฅ ๋ ๋์์ ธ ์์ํ์ง ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ ์ ์์ผ๋ฏ๋ก, ์ด๋ค ์กฐ๊ฑด๋ค์ ์ด๋ค ์กฐํฉ์ผ๋ก ์ฌ์ฉํ๋ ค๊ณ ํ๋์ง ๋ช ํํ๊ฒ ์ ์ ์๋๋ก ๊ดํธ๋ฅผ ๊ผญ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก COUNT
์ฟผ๋ฆฌ์ ๋ํ ๋ด์ฉ์
๋๋ค. ๋ฐ์ดํฐ ๊ฑด์๋ฅผ ์กฐํํ๋ ๋ฐ๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ด ์๋๋ฐ์. ์ฃผ๋ก ์ฌ์ฉ๋๋ ๊ฑด COUNT
ํจ์์
๋๋ค. COUNT
ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋, ๊ทธ๋ฆผ์ ์๋ ์์์ฒ๋ผ ๋ค์ํ ํํ๋ค์ด ์๊ณ , ๋ SUM
ํจ์๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
์ด์ฒ๋ผ ํํ๋ ๋ค๋ฅผ ์ ์์ง๋ง, ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ๋ชจ๋ ๋์ผํ ๋ฐ์ดํฐ ๊ฑด์๋ฅผ ๋ฐํํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋๋ฅผ ์ข ๋ ๋ช
ํํ ์ ์ ์๋ ํํ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์๋ฐ์. ๋ฐ์ดํฐ ๊ฑด์๋ฅผ ์ธ๊ธฐ ์ํ ๊ฒ์ด๋ฏ๋ก, SUM
๊ณผ ๊ฐ์ ํจ์๋ณด๋ค๋ COUNT
ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ํ COUNT
ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ธ์๋ก ํน์ ์ปฌ๋ผ์ด๋ 1๊ณผ ๊ฐ์ ์์๊ฐ์ ์ฃผ๊ธฐ๋ณด๋ค๋ (*, Asterisk)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
(*
)๋ ๋ชจ๋ ์ปฌ๋ผ ๊ฐ์ ๋ํํ๋ฉฐ, ์ด๋ ํน์ ์ปฌ๋ผ ๊ฐ์ ๊ณ ๋ คํ์ง ์๊ณ ๋จ์ง ํ์ ์๋ง ์ผ๋ค๋ ๊ฒ์ ๋ช
ํํ๊ฒ ๋ณด์ฌ์ค๋๋ค. ๋ฐ๋ผ์ ์ฟผ๋ฆฌ์ ๋ชฉ์ ์ ๋ถ๋ช
ํ ํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ฝ๋ ์ด๊ฐ ์์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก COUNT(*)
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ง์น๋ฉฐ
์ง๊ธ๊น์ง ์ฟผ๋ฆฌ์ ๊ฐ๋ ์ฑ์ ๋์ด๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ๋ํด ์ดํด๋ณด์๋๋ฐ์. ๊ฐ๋ ์ฑ ์ข์ ์ฟผ๋ฆฌ๋ ๋ ๋์ ์ดํด์ ๋น ๋ฅธ ๋ฌธ์ ํด๊ฒฐ, ๊ทธ๋ฆฌ๊ณ ์ํํ ํ์ ๊ณผ ์ํต์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋๋ค. ์ด๋ฒ ๊ธ์์ ์ค๋ช ํ ๋ด์ฉ์ ์์งํ์ฌ, ๊ฐ๋ ์ฑ ๋์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๊ธธ ๋ฐ๋๋๋ค.