JOIN?

Date:     Updated:

Categories:

Tags: , ,

❓ JOIN

  • 2개의 ν…Œμ΄λΈ”μ— λŒ€ν•΄μ„œ μ—°κ΄€λ˜μ–΄μžˆλŠ” νŠœν”Œμ„ κ²°ν•©ν•˜μ—¬ μƒˆλ‘œμš΄ λ¦΄λ ˆμ΄μ…˜μ„ λ°˜ν™˜ν•˜λŠ” 것.
  • 크게 보면 INNER JOINκ³Ό OUTER JOIN이 μžˆλ‹€.

κ·Έ 전에 DB μš©μ–΄μ •λ¦¬λ₯Ό κ°„λ‹¨νžˆ ν•˜κ³  μ§€λ‚˜κ°€κ² λ‹€.

  • βž” ν…Œμ΄λΈ” : ν–‰κ³Ό μ—΄λ‘œ 이루어진 λ°μ΄ν„°μ˜ 집합. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œλŠ” 여기에 μ œμ•½μ„ μΆ”κ°€ν•΄μ„œ λ¦΄λ ˆμ΄μ…˜μ΄λΌκ³  뢀름.

    • λͺ¨λ“  값은 μœ μΌν•œ 값을 가진닀
    • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ€‘λ³΅λ˜λŠ” 행이 μ‘΄μž¬ν•΄μ„œλŠ” μ•ˆλœλ‹€.
    • μœ„ 두 쑰건을 μΆ©μ‘±ν•˜μ—¬μ•Ό λ¦΄λ ˆμ΄μ…˜μ΄ λœλ‹€. λ”°λΌμ„œ λͺ¨λ“  λ¦΄λ ˆμ΄μ…˜μ€ ν…Œμ΄λΈ”μ΄μ§€λ§Œ λͺ¨λ“  ν…Œμ΄λΈ”μ΄ λ¦΄λ ˆμ΄μ…˜μ€ μ•„λ‹ˆλ‹€.
  • βž” ν–‰ : 데이터 쀑 κ°€λ‘œλ‘œ 묢은 데이터셋을 μ˜λ―Έν•œλ‹€. νŠœν”Œ λ˜λŠ” λ ˆμ½”λ“œλΌκ³  λΆ€λ₯Έλ‹€.
  • βž” μ—΄ : 데이터 쀑 μ„Έλ‘œλ‘œ 묢은 데이터셋을 μ˜λ―Έν•œλ‹€. 보톡 속성을 μ˜λ―Έν•œλ‹€.
  • βž” μŠ€ν‚€λ§ˆ : λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰λ₯Ό κΈ°μˆ ν•œ 것이닀.
    • 데이터 λ ˆμ½”λ“œμ˜ 크기
    • ν‚€μ˜ μ •μ˜
    • λ ˆμ½”λ“œ κ°„ 관계
    • μ‚¬μš©μžμ˜ 관점에 따라 μ™ΈλΆ€, κ°œλ…, λ‚΄λΆ€ μŠ€ν‚€λ§ˆλ‘œ κ΅¬λΆ„ν•œλ‹€.
      • μ™ΈλΆ€ μŠ€ν‚€λ§ˆ : μ‚¬μš©μžμ˜ μž…μž₯μ—μ„œ μ •μ˜ν•œ 논리적 ꡬ쑰, μ–΄λ–€ ν˜•μ‹, ꡬ쑰, 화면을 톡해 보여쀄 것인가에 λŒ€ν•œ λͺ…μ„Έ.
      • κ°œλ… μŠ€ν‚€λ§ˆ : DBλ₯Ό μ •μ˜ν•œ μŠ€ν‚€λ§ˆ. 일반적으둜 톡상 μŠ€ν‚€λ§ˆλ₯Ό μ΄λ ‡κ²Œ λΆ€λ₯Έλ‹€.
      • λ‚΄λΆ€ μŠ€ν‚€λ§ˆ : λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ–΄λ–»κ²Œ μ €μž₯μž₯μΉ˜μ— μ €μž₯될 지에 λŒ€ν•œ λͺ…μ„Έ. 물리적 μ €μž₯μž₯μΉ˜μ™€ 관계λ₯Ό μ •μ˜ν•œλ‹€.

❗ INNER JOIN

  • Equi Joinκ³Ό Non-Equi Join으둜 ꡬ뢄이 λœλ‹€.

βœ“ Equi Join

  • 연결고리가 λ˜λŠ” 곡톡 속성을 Join 속성이라 ν•  λ•Œ
  • Join λŒ€μƒ ν…Œμ΄λΈ”μ—μ„œ 곡톡 속성을 κΈ°μ€€μœΌλ‘œ equal, 즉 β€˜=’ 비ꡐ에 μ˜ν•΄ 같은 값을 κ°€μ§€λŠ” 행을 μ—°κ²°ν•œλ‹€.
  • Join 쑰건이 = μΌλ•Œ 곡톡 속성이 두 번 λ‚˜νƒ€λ‚˜κ²Œ λœλ‹€. 이 λ•Œ 쀑볡을 μ œκ±°ν•˜λ©΄ Natural Join이 λ˜λŠ” 것이닀.
SELECT ν…Œμ΄λΈ”1.속성, ν…Œμ΄λΈ”2.속성
FROM ν…Œμ΄λΈ”1, ν…Œμ΄λΈ”2
WHERE ν…Œμ΄λΈ”1.속성 =ν…Œμ΄λΈ”2.속성;
  • ν…Œμ΄λΈ”μ„ 쑰인할 λ•Œ ν•œ ν…Œμ΄λΈ”μ—λ§Œ μžˆλŠ” 속성은 ν…Œμ΄λΈ”λͺ…을 μƒλž΅ν•΄λ„ λ˜μ§€λ§Œ, 두 ν…Œμ΄λΈ”μ— κ³΅ν†΅μœΌλ‘œ μ†ν•΄μžˆλŠ” 속성은 ν…Œμ΄λΈ” λͺ…을 λ°˜λ“œμ‹œ ν‘œμ‹œν•˜μ—¬μ•Ό ν•œλ‹€.

βœ“ Non-Equi Join

  • κ°„λ‹¨ν•˜λ‹€. μœ„μ˜ Equi Join의 λ‚˜λ¨Έμ§€μ΄λ‹€. 즉 = μ—°μ‚°μœΌλ‘œ λΉ„κ΅ν•˜λŠ” 쑰인이 μ•„λ‹Œ λ‚˜λ¨Έμ§€ 쑰인은 λ‹€ Non-Equi Join이닀.

❗ OUTER JOIN

  • Join 쑰건에 λ§žμ§€ μ•ŠλŠ” νŠœν”Œλ„ 결과둜 좜λ ₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.
  • Left Outer Join, Right Outer Join, Full Outer Join이 μžˆλ‹€.

βœ“ Left Outer Join

  • Inner Join의 κ²°κ³Όμ—μ„œ 우츑 λ¦΄λ ˆμ΄μ…˜κ³Ό 곡톡속성이 μ—†λŠ” 쒌츑 λ¦΄λ ˆμ΄μ…˜μ˜ νŠœν”Œμ—λŠ” NULL 값을 λΆ€μ—¬ν•œλ‹€.
SELCT ν…Œμ΄λΈ”1.속성, ν…Œμ΄λΈ”2.속성
FROM ν…Œμ΄λΈ”1, ν…Œμ΄λΈ”2
Left Outer Join ν…Œμ΄λΈ”2
ON ν…Œμ΄λΈ”1.속성 = ν…Œμ΄λΈ”2.속성;

βœ“ Right Outer Join

  • Inner Join의 κ²°κ³Όμ—μ„œ 쒌츑 λ¦΄λ ˆμ΄μ…˜κ³Ό 곡톡속성이 μ—†λŠ” 우츑 λ¦΄λ ˆμ΄μ…˜μ˜ νŠœν”Œμ—λŠ” NULL 값을 λΆ€μ—¬ν•œλ‹€.
SELCT ν…Œμ΄λΈ”1.속성, ν…Œμ΄λΈ”2.속성
FROM ν…Œμ΄λΈ”1, ν…Œμ΄λΈ”2
Right Outer Join ν…Œμ΄λΈ”2
ON ν…Œμ΄λΈ”1.속성 = ν…Œμ΄λΈ”2.속성;

Left와 right Outer Joinμ—μ„œ μœ μ˜ν•  점

  • LeftλŠ” 쒌츑 λ¦΄λ ˆμ΄μ…˜ κΈ°μ€€μœΌλ‘œ 쒌츑 νŠœν”Œλ“€μ€ λͺ¨λ‘ ν‘œμ‹œλœλ‹€. RightλŠ” λ°˜λŒ€μ΄λ‹€.
    • 연산을 μ‚¬μš©ν•˜κ²Œ 되면 Inner joinκ³Ό λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.
      • LeftλŠ” 쑰건문의 우츑, RightλŠ” 쑰건문의 μ’ŒμΈ‘μ— μ‚¬μš©ν•œλ‹€.
      • μ˜ˆμ‹œ)
        SELECT ν…Œμ΄λΈ”1.속성, ν…Œμ΄λΈ”2.속성
        FROM ν…Œμ΄λΈ”1, ν…Œμ΄λΈ”2
        WHERE ν…Œμ΄λΈ”1.속성 = ν…Œμ΄λΈ”2.속성(+)
        

βœ“ Full Outer Join

  • Left와 Rightλ₯Ό ν•©μ³€λ‹€.
SELCT ν…Œμ΄λΈ”1.속성, ν…Œμ΄λΈ”2.속성
FROM ν…Œμ΄λΈ”1, ν…Œμ΄λΈ”2
Full Outer Join ν…Œμ΄λΈ”2
ON ν…Œμ΄λΈ”1.속성 = ν…Œμ΄λΈ”2.속성;

Leave a comment