์บก์ณ์ ๋์จ SQL๋ฌธ๋ฒ์ ANSI(๋ฏธ๊ตญํ์คํํ) SQL ํ์ค๊ณผ๋ ๋ค๋ฅธ ์๋ ๋ฌธ๋ฒ์ด ์ฌ์ฉ๋ ๊ฒ์ด ์์ต๋๋ค.
์ฝ๋ ๋ธ๋ญ์ ์ค์ฌ์ผ๋ก ๋ด์ฃผ์ธ์
Join
- 1๊ฐ ์ด์์ ํ ์ด๋ธ๋ก๋ถํฐ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ
- ๊ฒ์ํด์ค๋ ๋ฐฉ๋ฒ. PK์ FK๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ ผ๋ฆฌ์ ์ธ ๊ฐ๋ค์ ์ฐ๊ด์ผ๋ก ์ฑ๋ฆฝ๋ ๊ฐ๋ฅํจ.
- ์ฐ๊ด๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ.
- ํ ์ด๋ธ๊ฐ์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ ์์ ๋ ํฉ์ณ์ ์๋ก์ด ํ ์ด๋ธ์ ๋ณด์ฌ์ค
- ์ ๊ทํ: ํ ์ด๋ธ์ ์ชผ๊ฐ๋ ๊ฒ. ๋ฐ์ดํฐ์ ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ์ํจ. ์ค๋ณต์ด ๋ง์ผ๋ฉด ๋ณ๊ฒฝ ์ ๋ณ๊ฒฝํ์๊ฐ ๋ง์์ง๋ฉฐ ์ค์์ ์ค๋ฅ๊ฐ ์๊ธธ ์ ์์.
- Join(๋ถ์ด๊ธฐ) ↔ ์ ๊ทํ(์ชผ๊ฐ๊ธฐ)
Join ๋ฐฉ๋ฒ | ์๋ฏธ | ์์ |
EquiJoin | ์นผ๋ผ ๊ฐ์ ๊ฐ๋ค์ด ์๋ก ์ ํํ ์ผ์นํ ๋ |
์ง์์ ๋ณด์ ๋ถ์๋ฒํธ & ๋ถ์์ด๋ฆ & ๋ถ์์ ์ง์ญ๋ฒํธ์ ์ง์ญ์ด๋ฆ |
Non-EquiJoin | ์นผ๋ผ๊ฐ์ ๊ฐ์ด ์ ํํ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ. =์ฐ์ฐ์๋ ์ฌ์ฉ๋ถ๊ฐ. Between And๋ฑ์ ๋ค๋ฅธ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ์กฐ๊ฑด ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ธ ๋ฐ์ดํฐ ํ์ธํจ |
๊ธ์ฌ์ ๋ฑ๊ธ์ ๋งค๊ธธ ๋ |
Outer Join | Join์กฐ๊ฑด ๋ง์กฑ ์ํด๋ ๋ชจ๋ ํ์ ๋ณด๊ณ ์ถ์ ๋. (+)์ฐ์ฐ์๋ฅผ ์ฌ์ฉํจ. =์ฐ์ฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ถ์กฑํ ์ชฝ์ ์์น์ํจ๋ค. In X, Or X |
์ ์๊ธฐ ๋งค๋์ ์ ๊ณ ๊ฐ ๊ฐ์ ๋งค์นญ. ๋ ธ๋๋งค๋์ or ์ ๊ท๊ณ ๊ฐ ํ์ธ๊ฐ๋ฅํจ |
Self Join | ๊ฐ์ ํ
์ด๋ธ์ ํ๋ค์ Joinํ๊ณ ์ถ์ ๋. ํ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์์ ๊ณ์ธต์ด ์์ด์ผํจ. (์์ฌ-๋ถํ, ๋๋ถ๋ฅ-์ค๋ถ๋ฅ-์๋ถ๋ฅ) |
์ ์๊ธฐ ๋งค๋์ ์ ๊ณ ๊ฐ ๊ฐ์ ๋งค์นญ. ๋ ธ๋๋งค๋์ or ์ ๊ท๊ณ ๊ฐ ํ์ธ๊ฐ๋ฅํจ |
โ EquiJoin
- PK์ FK ์ผ์น
[EquiJoin (๋๋ฑ ์กฐ์ธ)]
SELECT *
FROM TableA
INNER JOIN TableB ON TableA.commonColumn = TableB.commonColumn;
โก Non-EquiJoin
- ๋ฑํธ ์ด์ธ์ ์ฐ์ฐ์ ์ฌ์ฉ.
- ๋ ์ปฌ๋ผ์ด ๊ฐ์ด ์ ํํ ์ผ์นํ์ง ์์ ๋.
[Non-EquiJoin (๋น๋๋ฑ ์กฐ์ธ)]
SELECT *
FROM TableA
JOIN TableB ON TableA.commonColumn > TableB.commonColumn;
โข Outer Join
- ๋ ํ ์ด๋ธ ์กฐ์ธํ ๋ ์ด๋ ํ์ชฝ์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์์ด๋ ๊ฒฐ๊ณผ ํ์ธ ํ ๋.
[Left Outer Join]
SELECT *
FROM TableA
LEFT JOIN TableB ON TableA.commonColumn = TableB.commonColumn;
[Right Outer Join]
SELECT *
FROM TableA
RIGHT JOIN TableB ON TableA.commonColumn = TableB.commonColumn;
[Full Outer Join]
SELECT *
FROM TableA
FULL OUTER JOIN TableB ON TableA.commonColumn = TableB.commonColumn;
โฃ Self Join
- ํ ์ด๋ธ ํ๋๋ฅผ Alias๋ถ์ฌ์ ์ฌ๋ฌ๊ฐ์ฒ๋ผ ์ฌ์ฉํด์ ์กฐ์ธํจ. ํ์ ์ ํ ์์.
[Self Join (์๊ธฐ ์์ ์กฐ์ธ)]
SELECT A.*, B.*
FROM TableA A, TableA B
WHERE A.commonColumn = B.commonColumn AND A.id != B.id;
Set ์ฐ์ฐ์
Union | ๊ฐ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ํฉ์งํฉ |
Union All | ๊ฐ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ํฉ์งํฉ +์ค๋ณต๋ฐ์ดํฐ(ํฉ์งํฉ๋ถ๋ถํ๋ฒ ๋). ๊ต์งํฉ์ด ์์ผ๋ฉด Union All ์ฐ๊ธฐ. Union๋ณด๋ค ์ฑ๋ฅ์ด ์ข๋ค. ๋ ํ ์ด๋ธ ๋ถ์ด๋ |
Intersect | ๊ฐ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ๊ต์งํฉ |
Minus | ๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ์ฐจ์งํฉ |
- ์ฒซ๋ฒ์งธ Select์ ์นผ๋ผ ๊ฐ์&ํ์ ๊ณผ ๋๋ฒ์งธ Select์ ์นผ๋ผ ๊ฐ์&ํ์ ์ด ์ผ์นํด์ผํจ.
- ์๋ก ๋ค๋ฅธํ ์ด๋ธ, ๊ฐ์ํ ์ด๋ธ Set ๊ฐ๋ฅ.
- ์ถ๋ ฅ์นผ๋ผ์ Heading์ ์ฒซ๋ฒ์งธ Select์ ์นผ๋ผ๋ช .
- Order By๋ ๋ง์ง๋ง์ ํ๋ฒ๋ง ๊ธฐ์ ํจ.
'๐ฅ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle] Constraint ์ ์ฝ์กฐ๊ฑด (0) | 2024.01.05 |
---|---|
[Oracle] SubQuery ์๋ธ์ฟผ๋ฆฌ (0) | 2024.01.05 |
[Oracle] SubGroup์ผ๋ก ๋ฐ์ดํฐ ๋ถ๋ฅ (0) | 2024.01.05 |
[Oracle] ํ ์ด๋ธ ์์ฑ ๋ฐ ๋ฐ์ดํฐ ์กฐ์ (0) | 2024.01.05 |
[์๋์ฐ ํจ์] PARTITION BY ์ ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ์๋์ฐ ํจ์ (0) | 2023.12.14 |