JOIN μ΄λ?
- λ μ΄μμ ν
μ΄λΈμ μ°κ²°νμ¬ κ²μνλ λ°©λ²
- λ ν
μ΄λΈμ μ‘°μΈμ νλ €λ©΄ μ΅μ νλμ 곡ν΅λ 컬λΌμ΄ μμ΄μΌ νλ€.
- κ·Έλμ μΌλ°μ μΌλ‘ PK μ FK λ₯Ό μ¬μ©νμ¬ μ‘°μΈμ νμ© νλ€.
JOIN μ λ°©λ²
1) cross join : κ±°μ μμ΄λ€.
2) equi join : μ μΌ λ§μ΄ μ¬μ©
3) non-equi join : μμ΄λ€.
4) self join : κ±°μ μμ΄λ€.
5) outer join : λ§μ΄ μ¬μ© νλ€.
1. CROSS JOIN
- μΉ΄λ€μμ κ³±μ μννλ€.
- λ κ°μ ν μ΄λΈμ κ³±ν νμ μννλ€.
FROM [table A] CROSS JOIN [table B];
emp ν
μ΄λΈμ ename ν(row)μ΄ 11κ°
dept ν
μ΄λΈμ deptno ν(row)μ΄ 5κ°
11 x 5 = 55κ°μ νμ΄ λμ¨λ€.
- cross join μμλ λ ν
μ΄λΈ μμ μλ―Έμλ λ°μ΄ν°λ₯Ό λ½μλ΄κΈ°κ° μ½μ§ μλ€.
μ€λ³΅λμ΄μ μ λΆλ€ λμ€κΈ° λλ¬Έμ
κ·Έλμ equi join μ μννλ€.
2. Equi join
- κ°μ₯ μΌλ°μ μΌλ‘ μ¬μ©νλ€.
- μ‘°κ±΄μ΄ μμΌλ©΄ κΈ°λ³Έ cross joinμ μννλ€.
1) λ±κ° μ‘°μΈ (Equi join)
- λ±κ° μ‘°μΈμ μμͺ½ ν μ΄λΈ λͺ¨λμ κ°μ΄ μ‘΄μ¬ν΄μΌ 보μ¬μ€λ€.
select e.ename, d.deptno from emp e, dept d where d.deptno = e.deptno;
where μ μ μ΄λ€ 컬λΌμ κΈ°μ€μΌλ‘ ν κ²μΈμ§ 쑰건μ μ¨μ£Όμ΄μΌ νλ€.
2) λ΄λΆ μ‘°μΈ (Inner join)
- λ±κ° μ‘°μΈκ³Ό κ°μλ° μ¬μ©λ²μ΄ λ€λ₯΄λ€.
- ν μ΄λΈκ³Ό ν μ΄λΈ μ¬μ΄μ inner joinμ λ£κ³ where λμ onμ μ¬μ©νλ€.
[ inner join - on ]
select e.ename, d.deptno from emp e inner join dept d on d.deptno = e.deptno;
- on λμ USING μΌλ‘ 쑰건μ μ€ μλ μλ€.
- USING μμλ μ‘°μΈμ μ¬μ©ν 컬λΌμ΄λ μλΈμΏΌλ¦¬ λ±μ μ¬μ©ν μ μλ€.
[ inner join - using ]
select e.ename, d.deptno from emp e join dept d using (deptno);
inner join μμ innerλ μλ΅ κ°λ₯νλ€.
κ²°κ³Όκ°μ μμ λ±κ°μ‘°μΈ κ²°κ³Όκ°κ³Ό κ°λ€.
3) λ΄μΈλ΄ μ‘°μΈ (Natural join)
- μμ°μ€λ½κ² 쑰건μμ΄ λ ν μ΄λΈμ κ°μ 컬λΌμ κ°μ΄ μμΌλ©΄ μ‘°μΈνλ€.
- λ ν μ΄λΈ κ°μ λμΌν μ΄λ¦μ κ°λ λͺ¨λ 컬λΌμ λν΄ λ±κ°μ‘°μΈμ νλ€.
- using / where / on μ μμμ join 쑰건μ μ μ μν μ μλ€.
select e.ename, d.deptno from emp e natural join dept d;
SELF JOIN
μκΈ°μ‘°μΈ
- μκΈ° μ€μ€λ‘ μ‘°μΈνλ€.
- μκΈ° μ‘°μΈμ νλ©΄ ν μ΄λΈ μμμ μΉ΄λ€μμ κ³±μ μννλ€.
emp ν μ΄λΈμ self join νλ©΄ emp x emp
OUTER JOIN
μΈλΆ μ‘°μΈ
- λ±κ° μ‘°μΈμ λ ν μ΄λΈ λͺ¨λμ κ°μ΄ μμ΄μΌ 보μ¬μ£Όλ λ°λ©΄
- μΈλΆ μ‘°μΈμ μ΄λ ν μͺ½μλ§ λ°μ΄ν°κ° μμ΄λ 보μ¬μ€λ€.
SELECT * FROM [table A] [LEFT|RIGHT] OUTER JOIN [table B] ON 쑰건μ ;
1) LEFT OUTER JOIN
- μΌμͺ½ ν μ΄λΈ(dept)μ κΈ°μ€μΌλ‘ λ μλ κ°μ 보μ¬μ€λ€.
- μλ κ°μ null μ²λ¦¬νλ€.
dept ν
μ΄λΈμ deptno λ 1,2,3,4,5
emp ν
μ΄λΈμ deptno λ 1,2,4
λ°λΌμ empμ 3,5 κ° μμ΄λ null κ°μΌλ‘ μ²λ¦¬νμ¬ λ³΄μ¬μ€λ€.
2) RIGHT OUTER JOIN
- μ€λ₯Έμͺ½ ν μ΄λΈ (emp)μ κΈ°μ€μΌλ‘ κ°μ΄ μμΌλ©΄ 보μ¬μ€λ€.
- λ§μ°¬κ°μ§λ‘ μλ 건 null
κ²°κ³Όκ°μ΄ λ±κ°μ‘°μΈ κ²°κ³Όμ κ°λ€.
emp μ μλ deptnoλ dept μ μλ deptno λ³΄λ€ μ’
λ₯κ° λ§μ§ μμμ λ±κ°μ‘°μΈ μ΄μμΌλ‘ λ 보μ¬μ€κ² μλ€.
κ·Έλμ right outer joinμ ν΄λ λ°μ΄ν°κ° μ°¨μ΄κ° λμ§ μλλ€.
emp ν μ΄λΈμ deptno = 6 μΈ λ°μ΄ν°λ₯Ό λ£κ³ λ€μ μ€νν κ²½μ°λ μλμ κ°λ€.
3) FULL OUTER JOIN
- μμͺ½μ μλ κ°λ€μ λͺ¨λ 보μ¬μ€λ€.
- maria db μμλ μ§μνμ§ μκΈ° λλ¬Έμ UNIONμ νμ© ν΄μΌ νλ€.
'DataBase > MariaDB' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
DB] IN / EXSITS / ANY / ALL / limit (0) | 2022.05.06 |
---|---|
DB] μλΈμΏΌλ¦¬ , μνκ΄κ³μΏΌλ¦¬ (0) | 2022.05.06 |
DB] μ μ½ μ‘°κ±΄(constraint) 2 - μ°Έμ‘° μ μ½ μ‘°κ±΄ / μ°κ³ μ°Έμ‘° λ¬΄κ²°μ± μ μ½ μ‘°κ±΄ / μ λν¬ μ μ½ μ‘°κ±΄ / μ²΄ν¬ μ μ½ μ‘°κ±΄ (0) | 2022.05.06 |
DB] νΈλμ μ (TRANSACTION) (0) | 2022.05.02 |
DB] μ μ½ μ‘°κ±΄(constraint) 1 - κΈ°λ³Έ ν€ μ μ½ μ‘°κ±΄ / NOT NULL (0) | 2022.04.28 |