-
MSSQL JOIN ์ ๋ฆฌ : INNER JOIN, OUTER JOIN, CROSS JOINDB 2020. 2. 10. 23:47๋ฐ์ํ
์ผ๋ฐ์ ์ผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํค(Key)์ ๊ฐ(Value)๋ค์ ๊ด๊ณ๋ฅผ ํ ์ด๋ธํ ์ํจ ๊ฐ๋จํ ์์น์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋งํ๋ค.
์ด๋ A ํ ์ด๋ธ๊ณผ B ํ ์ด๋ธ์ ์๋ ์ ๋ณด๋ค์ ํจ๊ป ์ถ๋ ฅํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น ?
๋ ๊ฐ์ ํ ์ด๋ธ์ ์ด์ด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ผ ํ ๊ฒ์ด๋ค.
์ด ๋ ํ์ํ๊ฒ์ด JOIN์ด๋ค.
์กฐ์ธ(JOIN) ?
๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๊ณฑํ ๊ฒฐ๊ณผ ์งํฉ ์ด๋ผ๊ณ ๊ฐ๋จํ MSDN์ ์ ์๋์ด์๋ค.
JOIN์๋ INNER JOIN๊ณผ OUTER JOIN ๊ทธ๋ฆฌ๊ณ CROSS JOIN ์ด๋ ๊ฒ ์ธ๊ฐ์ง ์ข ๋ฅ๊ฐ ์์ผ๋ฉฐ, ์ค๋ฌด์์๋ ๋๋ถ๋ถ INNER JOIN๊ณผ LEFT OUTER JOIN์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฆผ์ ๋ณด๋ฉฐ ํ๋์ฉ ์์๊ฐ ๋ณด์.
1. INNER JOIN
๊ต์งํฉ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด ์ค๋ค๊ณ ์๊ฐํด์ฃผ๋ฉด ์ฝ๋ค.
๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ ํ ์ด๋ธ์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ง ์ถ๋ ฅํด ์ค๋ค.JOIN์ ํ ์๋ต์ ๊ธฐ๋ณธ์ ์ผ๋ก INNER JOIN์ผ๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ฉฐ,
INNER JOIN์ LEFT,RIGHT๊ฐ์ ๊ธฐ์ค์ ์ ํด์ฃผ์ง ์๋๋ฐ, INNER JOIN์ ๋ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ธฐ์ค์ด ๋๋ ํ ์ด๋ธ์ ์ ํด์ฃผ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
2. OUTER JOIN
1) LEFT OUTER JOIN
OUTER JOIN์ด INNER JOIN๊ณผ ๋ค๋ฅธ์ ์ ์กฐ๊ฑด์ ๋ง์ง ์๋ ๋ฐ์ดํฐ๋ ํ์ํด ์ค๋ค๋ ์ ์ด๋ค.LEFT JOIN ์ํ์ ๋จผ์ ํ๊ธฐ๋ ์ข์ธก ํ ์ด๋ธ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ฝ์ ํ ๋์ค์ ํ๊ธฐ๋ ์ฐ์ธก ํ ์ด๋ธ์์ JOIN๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
์ฆ Aํ ์ด๋ธ๊ณผ Bํ ์ด๋ธ์ด ์์ ๋ A๊ฐ ๊ธฐ์ค์ด ๋์ด, A์ B๋ฅผ ๋น๊ตํ๋ค์ B์ JOIN ์ปฌ๋ผ์์ ๊ฐ์ ๊ฐ์ด ์์ ๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ B์ JOIN์ปฌ๋ผ์์ ๊ฐ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์๋ Bํ ์ด๋ธ์์ ๊ฐ์ ธ์ค๋ ์ปฌ๋ผ๋ค์ NULL ๊ฐ์ผ๋ก ์ฑ์ฐ๋ ๊ฒ์ด๋ค.
์ฐธ๊ณ ๋ก OUTER JOIN์ ๊ธฐ๋ณธ์ ์ผ๋ก LEFT OUTER JOIN์ผ๋ก ๋ช ์๋๋ฉฐ, OUTER ํค์๋๋ ์๋ต๊ฐ๋ฅํ๋ค.
2) RIGHT OUTER JOIN
RIGHT JOIN์ LEFT JOIN๊ณผ๋ ๋ฐ๋๋ก ์ฐ์ธก ํ ์ด๋ธ์ด ๊ธฐ์ค์ด ๋๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
3) FULL OUTER JOIN
JOIN ์ํ์ ์ข์ธก๊ณผ ์ฐ์ธก์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ JOIN ํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ฉฐ, ๋ ๊ฐ์ ํ ์ด๋ธ ๋ชจ๋๊ฐ ๊ธฐ์ค์ด ๋๋ค.
ํฉ์งํฉ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ค๋ค๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค.
๋จ UNION ALL์ด ์๋ UNION ๊ธฐ๋ฅ๊ณผ ๊ฐ์ผ๋ฏ๋ก ์ค๋ณต ๋ฐ์ดํฐ๋ ์ญ์ ๋๋ค.
3. CROSS JOIN
CROSS JOIN์ ์ํธ ์กฐ์ธ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ํ ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํ๋ค๊ณผ ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ชจ๋ ํ์ ์กฐ์ธ์ํค๋ ๊ธฐ๋ฅ์ ํ๋ค.
๊ทธ๋์ CROSS JOIN์ ๊ฒฐ๊ณผ ๊ฐ์๋ ๋ ํ ์ด๋ธ์ ํ์ ๊ฐ์๋ฅผ ๊ณฑํ ๊ฐ์๊ฐ ๋๋ค.
CROSS๋ฌธ์ ๋ชจ๋ ํ์ ๋ํ ๊ฒฐํฉ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ON๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค.
์์ ์๋ ๋ฐ์ดํฐ์ ๋ํ ์นดํผ ํ ์ฐ์ฐ์ด๋ ๋ถ๋ถํฉ์ ๊ตฌํ ๋ ์ฐ์์ง๋ง, ์ง๊ธ์ CUBE๋ GROUPPING์ผ๋ก ๋์ฒด๋์๊ณ ํ์ฌ๋ ์ ์ฐ์ง ์๋๋ค.
๋ค์์๋ JOIN๋ฌธ ์์ ๋ฅผ ํตํด ์ข ๋ ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
๋ฐ์ํ'DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MSSQL : INNER JOIN๊ณผ CROSS APPLY์ ์ฐจ์ด (0) 2020.02.17 SQL : ANSI query ์์์ฟผ๋ฆฌ๋ ? (0) 2020.02.11 MSSQL์์ ํ ์ด๋ธ ์์ฑ์ ์๊ธฐ๋ [dbo]. ๋ ๋ฌด์์ผ๊น ? (1) 2020.02.05 MSSQL : CREATE TABLE, ํ ์ด๋ธ ์์ฑ (0) 2020.02.05 MSSQL : SQL Server ์ค์น ๋ฐ ์ฐ๊ฒฐ -2 (0) 2020.02.04