์กฐ์ธ
์กฐ์ธ์ ๋ ์ด์์ ํ ์ด๋ธ, ๋ทฐ์ ํ์ ๊ฒฐํฉํ๋ ์ฟผ๋ฆฌ
์ฟผ๋ฆฌ์ FROM์ ์ ์ฌ๋ฌ ํ ์ด๋ธ์ด ๋ํ๋ ๋๋ง๋ค ์กฐ์ธ์ ์ํํจ
์กฐ์ธ ์กฐ๊ฑด
์กฐ์ธ ์ฟผ๋ฆฌ์๋ FROM์ ๋๋ WHERE์ ์ ํ๋ ์ด์์ ์กฐ์ธ ์กฐ๊ฑด์ด ํฌํจ๋์ด ์์
INNER JOIN(๋ด๋ถ ์กฐ์ธ)
์กฐ์ธ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ๋ง ๋ฐํํ๋ ๋ ์ด์์ ํ ์ด๋ธ์ ์กฐ์ธ
์ข ๋ฅ EQUI JOIN, NATURAL JOIN, CROSS JOIN, SELF JOIN, NON-EQUI JOIN ๋ฑ
EQUI JOIN
์กฐ์ธ ๋์ ํ ์ด๋ธ์ ์ปฌ๋ผ ๊ฐ๋ค์ด ์๋ก ์ ํํ๊ฒ ์ผ์นํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ JOIN
์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ง์ ๊ฐ์ ธ์ด
WHERE ์ ์ '='
(Equality Condition) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ JOIN ์กฐ๊ฑด์ ๋ช ์
SELECT select_list FROM table_name1
[ INNER ] JOIN table_name2 ON join_condition
[[ INNER ] JOIN table_name3 ON join_condition ]
[ WHERE where_condition ];
NATURAL JOIN
EQUI JOIN์์ JOIN ์กฐ๊ฑด์ด '='์ผ ๋ ๋์ผํ ์์ฑ์ด ๋ ๋ฒ ๋ํ๋๊ฒ ๋๋๋ฐ, ์ด ์ค ์ค๋ณต์ ์ ๊ฑฐํ์ฌ ๊ฐ์ ์์ฑ์ ํ ๋ฒ๋ง ํ๊ธฐ
NATURAL JOIN์ ๋ ํ
์ด๋ธ์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง๋ ์ปฌ๋ผ์ด ๋ชจ๋ ์กฐ์ธ๋๋ค.
๋์ผํ ์ปฌ๋ผ์ ๋ด๋ถ์ ์ผ๋ก ์ฐพ๊ฒ ๋๋ฏ๋ก ํ
์ด๋ธ ๋ณ์นญ(Alias)์ ์ฃผ๋ฉด ์ค๋ฅ
SELECT select_list
FROM table_name1 NATURAL JOIN table_name2;
CROSS JOIN
์ํธ ์กฐ์ธ์ ์กฐ์ธ์ ํฌํจ๋ ํ
์ด๋ธ์ ์นดํฐ์
๊ณฑ(Cartisian Product)์ ๋ฐํ
SELECT select_list
FROM table_name1 CROSS JOIN table_name2;
SELF JOIN
SELF JOIN์ ๊ฐ์ ํ
์ด๋ธ์์ 2๊ฐ์ ์์ฑ์ ์ฐ๊ฒฐํ์ฌ EQUI JOIN์ ํ๋ ๊ฒ
-- ๋ฌต์์ ํํ
SELECT select_list FROM table_name, table_name WHERE condition;
-- ๋ช
์์ ํํ
SELECT select_list FROM table_name JOIN table_name ON join_condition;
NON- EQUI JOIN
์กฐ์ธ ๋์ ํ ์ด๋ธ์ ์ด๋ค ์นผ๋ผ ๊ฐ๋ ์ผ์นํ์ง ์์ ๋ ์ฌ์ฉํ๋ฉฐ'='์ด์ธ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉ
-- ๋ฌต์์ ํํ
SELECT select_list FROM table_name1, table_name2 WHERE non-equi-join_condition;
-- ๋ช
์์ ํํ
SELECT select_list FROM table_name1 JOIN table_name2 ON non-equi-join_condition;
OUTER JOIN
์กฐ์ธ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ JOIN
OUTER JOIN์ ์ด๋ ํ์ชฝ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์ด
INNER JOIN์ด ๋ ํ ์ด๋ธ์ ์๋ ์ผ์นํ๋ ๊ฐ๋ง ๊ฐ์ ธ์ด
์ข ๋ฅ LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN
LEFT OUTER JOIN
JOIN ์ํ ์ ์ผ์ชฝ์ ํ๊ธฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก OUTER JOIN
์ผ์ชฝ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ ๊ฒฝ์ฐ
JOIN๋ฌธ์ ์ผ์ชฝ์ ์๋ ํ ์ด๋ธ์ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์จ ํ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋งค์นญํ๊ณ , ๋งค์นญ๋๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ NULL
-- ๋ฌต์์ ํํ
SELECT select_list FROM table_name1, table_name2 WHERE table_name1. column = table_name2. column(+);
-- ๋ช
์์ ํํ
SELECT select_list FROM table_name1 LEFT [ OUTER ] JOIN table_name2 ON join_condition;
RIGHT OUTER JOIN
์ค๋ฅธ์ชฝ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ ๊ฒฝ์ฐ
JOIN ์ํ ์ ์ค๋ฅธ์ชฝ์ ํ๊ธฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก OUTER JOIN์ ์ํ
JOIN๋ฌธ์ ์ค๋ฅธ์ชฝ์ ์๋ ํ ์ด๋ธ์ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์จ ํ ์ผ์ชฝ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋งค์นญํ๊ณ ,๋งค์นญ๋๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ NULL
-- ๋ฌต์์ ํํ
SELECT select_list FROM table_name1, table_name2 WHERE table_name1. column(+) = table_name2. column;
-- ๋ช
์์ ํํ
SELECT select_list FROM table_name1 RIGHT [ OUTER ] JOIN table_name2 ON join_condition;
FULL OUTER JOIN
์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์์ผ ํ๋ ๊ฒฝ์ฐ
์กฐ์ธ ์ํ ์ ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๊ฐ์ ์ฝ์ด JOIN์ ์ํ
JOIN์ ๊ฒฐ๊ณผ๋ฅผ ํฉ์งํฉ์ผ๋ก ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ์ ๋์ผ
SELECT select_list FROM table_name1 FULL [ OUTER ] JOIN table_name2 ON join_condition;
'๐ปProgramming > ๐ฝOracle' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle] ๋ทฐ (0) | 2022.08.12 |
---|---|
[Oracle] ์๋ธ์ฟผ๋ฆฌ (0) | 2022.08.11 |
[Oracle] ์ ์ฝ์กฐ๊ฑด (0) | 2022.08.10 |
[Oracle] ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ(Data Dictionary) (0) | 2022.08.10 |
[ORACLE] ๋ฐ์ดํฐ ์กฐ์์ธ์ด(DML) (0) | 2022.08.09 |