[DB] ORACLE - JOIN ์ ๋ฆฌ
in DB
ORACLE
JOIN
- 2๊ฐ ์ด์์ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด์ ์ฌ์ฉ
- FROM ์ ์ ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๋ช ์ํ๋ค(View, Subquery๋ ๊ฐ๋ฅ)
- ๊ณตํต๋ ์ปฌ๋ผ์ด ์๋ค๋ฉด, ๋ ํ ์ด๋ธ์ ๊ณตํต์ปฌ๋ผ์ ๊ฐ์ง ๋ค๋ฅธ ํ ์ด๋ธ๊ณผ JOINํ ํ ๋ชฉํ ํ ์ด๋ธ๊ณผ JOIN
- ๋ ํ ์ด๋ธ์ ๋ชจ๋ ์กฐํฉ ํ์ธ
SELECT * FROM TABLE1, TABLE2;
- ๋ง์ฝ ํ ์ด๋ธ1, ํ ์ด๋ธ 2์ ๊ฐ ๊ฐ 3๊ฐ์ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํ๋ฏ๋ก ์ด 9๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋์ด
- ์กฐ๊ฑด์ ๊ฑธ์ด์ ๋ฐ์ดํฐ์ ์๋ง์ ๊ฐ์ ๋งค์นญ ์์ผ์ค์ผ ํจ
SELF JOIN
- ์๊ธฐ ์์ ์ ํ ์ด๋ธ๊ณผ ํฉ์น๋ ๊ฒ
- ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ์์ ์ ํ ์ด๋ธ์ ์์ ๋ ์ฌ์ฉ
SELECT a.์นผ๋ผ๋ช
, b.์นผ๋ผ๋ช
...
FROM TABLE1 A JOIN TABLE1 B
ON A.์ปฌ๋ผ = B.๋ค๋ฅธ์ปฌ๋ผ
INNER JOIN ์ฌ์ฉ๋ฒ
- ๋ ํ ์ด๋ธ์ ๊ต์งํฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค
- ๋ ํ ์ด๋ธ์ ๊ณตํต๋ ๊ฐ์ ์ถ๋ ฅํด์ค๋ค
SELECT * FROM TABLEA
INNER JOIN TABLEB
ON TABLEA.์ปฌ๋ผ = TABLEB.์ปฌ๋ผ
FULL OUTER JOIN
- ๋ ํ ์ด๋ธ์ ํฉ์งํฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค
- ๊ณตํต๋ ๊ฐ๋ค์ ๊ณตํต๋ ๊ฐ๋ผ๋ฆฌ ๋ฌถ์ด์ ธ์ ๋์ค๊ณ , ๊ณตํต๋์ง ์์ ๊ฐ๋ค๋ ๋ชจ๋ ๋ค ์ถ๋ ฅ๋จ
SELECT [TABLEA.]์์ฑ๋ช
,[TABLEB]์์ฑ๋ช
FROM TABLEA FULL OUTER JOIN TABLEB
ON TABLEA.์ปฌ๋ผ = TABLEB.์ปฌ๋ผ
LEFT OUTER JOIN
- ๋ ํ ์ด๋ธ ์ค์์ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ์กฐ์ธ์ํฌ ์ปฌ๋ผ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค
- ์ผ์ชฝ ํ ์ด๋ธ(TABLE A)์ ๊ฐ์ ๋ชจ๋ ๋์ค์ง๋ง ์ค๋ฅธ์ชฝ ํ ์ด๋ธ (TABLE B)์ ๊ฐ์ ๋งค์นญ๋๋๊ฒ ์์ผ๋ฉด ์ถ๋ ฅ๋์ง์์
SELECT * FROM TABLEA
LEFT OUTER JOIN TABLEB
ON TABLEA.์นผ๋ผ = TABLEB.์นผ๋ผ
RIGHT OUTER JOIN
- ๋ ํ ์ด๋ธ ์ค์์ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ์กฐ์ธ์ํฌ ์ปฌ๋ผ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๊ฒ ๋๋ค
- ์ค๋ฅธ์ชฝ ํ ์ด๋ธ (TABLE B)์ ๊ฐ์ ๋ชจ๋ ๋ค ๋์ค์ง๋ง ์ผ์ชฝ ํ ์ด๋ธ (TABLE A)์ ๊ฐ์ ๋งค์นญ๋๋๊ฒ ์์ผ๋ฉด ์ถ๋ ฅ๋์ง ์์
SELECT * FROM TABLEB
RIGHT OUTER JOIN TABLEA
ON TABLEB.์นผ๋ผ = TABLEA.์นผ๋ผ
SUB QUERY
- ํ๋์ SQL๋ฌธ ์์ ํฌํจ๋์ด ์๋ ๋ ๋ค๋ฅธ SQL๋ฌธ์ ๋งํจ
- ์๋ฅผ๋ค์ด โํ๊ท ์ฐ๋ด๋ณด๋ค ๋ง์ ์ฌ๋๋ง ์ถ๋ ฅํ์์คโ๋ ์์ ๊ฐ ์๋ค๋ฉด ๋จผ์ ํ๊ท ์ฐ๋ด์ ๊ตฌํด์ผํ๋ค
- ์ด ๋ ํ๊ท ์ฐ๋ด์ ๊ตฌํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ณต์ฌํด์ ๋น๊ตํ๋ฉด 2๋ฒ ์คํํด์ผํ๋ฏ๋ก ๋นํจ์จ์ ์ด๋ค
- SUB QUERY๋ฅผ ์ฌ์ฉํด์ ๊ฒฐ๊ณผ๊ฐ์ ๊ตฌํ ํ ๋ฉ์ธ์ฟผ๋ฆฌ์์ ์ฌ์ฉํ ์ ์๋ค
- ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋จผ์ ์์ฑ ํ ๋ฉ์ธ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค
- ์๋ธ์ฟผ๋ฆฌ ์์ฑ์ ์ฃผ์์ฌํญ
- ์๋ธ์ฟผ๋ฆฌ ๋ถ๋ถ์ WHERE์ ์ ์ฐ์ฐ์ ์ค๋ฅธ์ชฝ์ ์์นํด์ผ ํ๋ค.
- ๋ฐ๋์ ๊ดํธ๋ก ๋ฌถ์ด์ผ ํ๋ค.
- ํน๋ณํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ์๋ธ์ฟผ๋ฆฌ์ ์ order by ์ ์ด ์ฌ ์ ์๋ค.
- ๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ์ ๋ค์คํ ์๋ธ์ฟผ๋ฆฌ์ ๋ฐ๋ผ ์ฐ์ฐ์๋ฅผ ์ ์ ํํด์ผํ๋ค.
SELECT TABLE1 ์นผ๋ผ
FROM TABLE1
WHERE ์ฐ๋ด > (SELECT AVG(์ฐ๋ด) FROM TABLE1)