2 min read

JOIN

Table of Contents

Cross Join

select * from table1, table2
  • join 쑰건 μƒλž΅. 데카λ₯΄νŠΈ κ³±.

Natural Join

select * from departments
natural join locations
  • 두 ν…Œμ΄λΈ”μ— 곡톡 컬럼이 μžˆλŠ” 경우 λ¬΅μ‹œμ μœΌλ‘œ 쑰인.
  • 컬럼λͺ… κ²Ήμ³μ„œ μ—‰λš±ν•œ κ²°κ³Όκ°€ λ‚˜μ˜¬ 수 μžˆμœΌλ‹ˆ 주의.

Inner Join

select * from employees e
inner join departments d
on(e.department_id = d.department_id)
  • inner ν‚€μ›Œλ“œ μƒλž΅ κ°€λŠ₯.
  • ANSI ν‘œμ€€ 문법.
  • on μ ˆμ— 쑰인 쑰건 μž‘μ„±.(where μ ˆμ—λ„ μž‘μ„± κ°€λŠ₯)
  • 컬럼λͺ…이 같은 경우 λ‹€μŒκ³Ό 같이 using μ ˆμ„ μ‚¬μš©ν•΄λ„ 무방함.
select * from employees
inner join departments
using(department_id)

Oracle 방식

select t1.col1, t1.col2, t2.col1
from table1 t1, table2 t2
where t1.col3 = t2.col3
  • from μ ˆμ— ν•„μš”λ‘œ ν•˜λŠ” ν…Œμ΄λΈ”μ„ λͺ¨λ‘ μ λŠ”λ‹€. (alias μ‚¬μš© κ°€λŠ₯)
  • μ μ ˆν•œ 쑰건을 where μ ˆμ— λΆ€μ—¬ν•œλ‹€.

Outer Join

select *
from employees e
left outer join departments d
on(e.department_id = d.department_id)
  • left(right) outer join: μ™Όμͺ½(였λ₯Έμͺ½)의 λͺ¨λ“  νŠœν”Œμ€ κ²°κ³Ό ν…Œμ΄λΈ”μ— λ‚˜νƒ€λ‚¨.
  • full outer join: μ–‘μͺ½ λͺ¨λ‘ κ²°κ³Ό ν…Œμ΄λΈ”μ— λ‚˜νƒ€λ‚¨.
  • outer ν‚€μ›Œλ“œ μƒλž΅ κ°€λŠ₯.

Self Join

select e.name as '사원 이름', m.name as '상사 이름'
from employees e
join employees m
on(e.manager_id = m.employee_id)
  • 같은 ν…Œμ΄λΈ”μ— alias λ‹€λ₯΄κ²Œ μ£Όκ³  join