๐Ÿ“Œ SQL ํ‘œ์ค€ ์กฐ์ธ (Standard JOIN)

My Pale Blue Dotยท2025๋…„ 3์›” 27์ผ
0

DBMS

๋ชฉ๋ก ๋ณด๊ธฐ
10/10
post-thumbnail

๐Ÿ“… ๋‚ ์งœ

2025-03-26

๐Ÿ“ ํ•™์Šต ๋‚ด์šฉ


1๏ธโƒฃ ํ‘œ์ค€ ์กฐ์ธ์ด๋ž€?

โœ… ๊ฐœ๋… ์„ค๋ช…

  • *ํ‘œ์ค€ ์กฐ์ธ(Standard Join)์€ SQL-92๋ถ€ํ„ฐ ๋„์ž…๋œ ANSI ํ‘œ์ค€ ๋ฌธ๋ฒ•**์ด๋‹ค.
  • ์กฐ์ธ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋„๋ก JOIN ... ON ํ˜•์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ณผ๊ฑฐ์—๋Š” FROM ์ ˆ์— ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ๋‚˜์—ดํ•˜๊ณ  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;

2๏ธโƒฃ ์˜ˆ์ œ์™€ ์ฝ”๋“œ ์„ค๋ช…

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 ... โ†’ ๊ฒฐ๊ณผ ํ•„ํ„ฐ๋ง โ†’ ์ด๋ ‡๊ฒŒ ๊ตฌ๋ถ„ํ•˜๋ฉด ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋„ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ!

3๏ธโƒฃ ํ‘œ์ค€ ์กฐ์ธ์˜ ์žฅ์ 

ํ•ญ๋ชฉ์„ค๋ช…
๊ฐ€๋…์„ฑJOIN, ON, WHERE๋กœ ์กฐ์ธ ์กฐ๊ฑด๊ณผ ํ•„ํ„ฐ ์กฐ๊ฑด์ด ๊ตฌ๋ถ„๋จ
์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด์กฐ๊ฑด ์ถ”๊ฐ€/์‚ญ์ œ๊ฐ€ ๊ฐ„ํŽธํ•จ
์‹ค๋ฌด ์‚ฌ์šฉ๋ชจ๋“  DBMS์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ (MySQL, Oracle, PostgreSQL ๋“ฑ)
๋ณต์žกํ•œ ์กฐ์ธ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ์กฐ์ธ์„ ์—ฐ๊ฒฐํ•  ๋•Œ ์œ ๋ฆฌ

๐Ÿ”ฅ ์ •๋ฆฌ

  • ํ‘œ์ค€ ์กฐ์ธ์€ JOIN ... ON ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ANSI SQL ๋ฐฉ์‹
  • ์กฐ์ธ ์กฐ๊ฑด๊ณผ ํ•„ํ„ฐ ์กฐ๊ฑด์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
  • ์‹ค๋ฌด์—์„œ๋Š” ๋ฌด์กฐ๊ฑด ํ‘œ์ค€ ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ ๊ถŒ์žฅ!
  • INNER, OUTER, CROSS, SELF JOIN ๋ชจ๋‘ ํ‘œ์ค€ ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ ๊ฐ€๋Šฅ

๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ


โœ… ๋А๋‚€ ์ 

๋น„ํ‘œ์ค€ ๋ฐฉ์‹์— ์ต์ˆ™ํ•ด์ ธ ์žˆ์—ˆ์ง€๋งŒ,

ํ‘œ์ค€ ์กฐ์ธ์„ ์“ฐ๋ฉด ์ฟผ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ํ›จ์”ฌ ๋ช…ํ™•ํ•ด์ง€๊ณ  ํ˜‘์—… ์‹œ์—๋„ ํ˜ผ๋™์ด ์ ์–ด์ง„๋‹ค๋Š” ๊ฑธ ๋А๊ผˆ๋‹ค.

์•ž์œผ๋กœ๋Š” JOIN ... ON ... WHERE ๊ตฌ์กฐ๋ฅผ ์Šต๊ด€์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค!


๐Ÿง  ์š”์•ฝ (Summary)

  • ํ‘œ์ค€ ์กฐ์ธ = JOIN ... ON ANSI SQL ๋ฌธ๋ฒ•
  • ์กฐ๊ฑด์„ WHERE ์ ˆ์— ์“ฐ์ง€ ์•Š๊ณ  ON ์ ˆ์— ๋ช…ํ™•ํžˆ ๊ธฐ์ˆ 
  • ๊ฐ€๋…์„ฑ, ํ™•์žฅ์„ฑ, ํ˜‘์—…์„ฑ์ด ์ข‹์•„ ์‹ค๋ฌด์—์„œ ํ•„์ˆ˜
profile
Here, My Pale Blue.๐ŸŒ

0๊ฐœ์˜ ๋Œ“๊ธ€