
2025-03-26
JOIN ... ON ํ์์ ์ฌ์ฉํ๋ค.WHERE์์ ์กฐ๊ฑด์ ๊ฑธ์์ง๋ง, ํ์ค ์กฐ์ธ์ ์กฐ์ธ ์กฐ๊ฑด๊ณผ ํํฐ ์กฐ๊ฑด์ ๋ถ๋ฆฌํ ์ ์์ด์ ๊ฐ๋
์ฑ, ์ ์ง๋ณด์์ฑ์ด ๋๋ค.SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ1
[INNER | LEFT | RIGHT | FULL] JOIN ํ
์ด๋ธ2
ON ์กฐ์ธ์กฐ๊ฑด
[WHERE ํํฐ์กฐ๊ฑด];
-- ๋นํ์ค ๋ฐฉ์ (Oracle์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ์์ ์คํ์ผ)
SELECT E.ENAME, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;
๐ฝ
-- ํ์ค ANSI JOIN ๋ฌธ๋ฒ
SELECT E.ENAME, D.DNAME
FROM EMP E
JOIN DEPT D
ON E.DEPTNO = D.DEPTNO;
SELECT E.ENAME, -- ์ฌ์ ์ด๋ฆ
D.DNAME -- ๋ถ์ ์ด๋ฆ
FROM EMP E -- ์ฌ์ ํ
์ด๋ธ์ E๋ผ๋ ๋ณ์นญ ๋ถ์ฌ
JOIN DEPT D -- ๋ถ์ ํ
์ด๋ธ์ D๋ผ๋ ๋ณ์นญ ๋ถ์ฌ ํ ์กฐ์ธ
ON E.DEPTNO = D.DEPTNO -- ์กฐ์ธ ์กฐ๊ฑด: ์ฌ์์ ๋ถ์๋ฒํธ์ ๋ถ์์ ๋ถ์๋ฒํธ๊ฐ ๊ฐ์ ๋
WHERE E.SAL > 3000; -- ํํฐ ์กฐ๊ฑด: ๊ธ์ฌ๊ฐ 3000 ์ด๊ณผ์ธ ์ฌ์๋ง ์ถ๋ ฅ
๐ ์ค๋ช
JOIN ... ON โ ์กฐ์ธ ์กฐ๊ฑดWHERE ... โ ๊ฒฐ๊ณผ ํํฐ๋ง โ ์ด๋ ๊ฒ ๊ตฌ๋ถํ๋ฉด ๋ณต์กํ ์ฟผ๋ฆฌ๋ ๊น๋ํ๊ฒ ๊ด๋ฆฌ ๊ฐ๋ฅ!| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| ๊ฐ๋ ์ฑ | JOIN, ON, WHERE๋ก ์กฐ์ธ ์กฐ๊ฑด๊ณผ ํํฐ ์กฐ๊ฑด์ด ๊ตฌ๋ถ๋จ |
| ์ ์ง๋ณด์ ์ฉ์ด | ์กฐ๊ฑด ์ถ๊ฐ/์ญ์ ๊ฐ ๊ฐํธํจ |
| ์ค๋ฌด ์ฌ์ฉ | ๋ชจ๋ DBMS์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ (MySQL, Oracle, PostgreSQL ๋ฑ) |
| ๋ณต์กํ ์กฐ์ธ | ์ฌ๋ฌ ๊ฐ์ ํ ์ด๋ธ ์กฐ์ธ์ ์ฐ๊ฒฐํ ๋ ์ ๋ฆฌ |
JOIN ... ON ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ANSI SQL ๋ฐฉ์๋นํ์ค ๋ฐฉ์์ ์ต์ํด์ ธ ์์์ง๋ง,
ํ์ค ์กฐ์ธ์ ์ฐ๋ฉด ์ฟผ๋ฆฌ ๊ตฌ์กฐ๊ฐ ํจ์ฌ ๋ช ํํด์ง๊ณ ํ์ ์์๋ ํผ๋์ด ์ ์ด์ง๋ค๋ ๊ฑธ ๋๊ผ๋ค.
์์ผ๋ก๋ JOIN ... ON ... WHERE ๊ตฌ์กฐ๋ฅผ ์ต๊ด์ฒ๋ผ ์ฌ์ฉํด์ผ๊ฒ ๋ค!
JOIN ... ON ANSI SQL ๋ฌธ๋ฒ