320x100
320x100

JOIN (inner join)

- 두개 이상의 테이블에 대해서 결합하여 나타날때 사용하는 문법

- select a.col1, b.col1 from table1 a join table2 b on a.col2 = b.col2;

 : table1과 table2를 각각 a와 b라는 이름으로 치환하고 table1의 col1 컬럼과

   table2의 col1 컬럼을 출력한다. 단, 두 테이블의 col2가 같은 값에 대해서만

 

 

EQUI join (등가 join)

- select a.col1, b.col1 from table1 a join table2 b on a.col2 = b.col2;

- 3항 조인

 : select a.col1, b.col1, c.col1 from (table1 a join table2 on a.col2 = b.col2) 

   join table3 c on a.col3 = c.col3;

 

 

Non Equi join (비등가 join)

- select a.col1, b.col1 from table1 a join table2 b on a.col2 >= b.col2 and a.col2 <= b.col3;

 

 

outer join

- 한쪽 테이블에는 데이터가 있고 다른쪽 테이블에는 데이터가 없는 경우, 

  데이터가 있는 쪽 테이블의 내용을 모두 출력 하는 것

  : 조건에 맞지 않아도 해당하는 행을 출력할때 사용

 

- left outer join

 : 조인문에 왼쪽에 있는 테이블의 모든 결과를 가져온 후 오른쪽 테이블의 데이터를 매칭하고 

   매칭되는 데이터가 없는 경우 null로 표시

 

- right outer join

 : 조인문에 오른쪽에 있는 테이블의 모든 결과를 가져온 후 왼쪽 테이블의 데이터를 매칭하고 

   매칭되는 데이터가 없는 경우 null로 표시

 

- full outer join

 : 양쪽 모두 조건이 일치하지 않는 데이터까지 결합하여 출력

 : my SQL에서는 full outer join이 없으므로 left join과 right join의 결과를 union하여 출력

 : select a.col1, b.col1 from ta1 a left outer join ta2 b

  union 

  select a.col1,  b.col from ta1 a right outer join ta2 b;

 

- 예시 (left outer join)

 : select a.col1, b.col1 from table1 a left outer join table2 b on a.col2 = b.col2;

  = table1의 데이터를 가져 온후 table2에 매칭

  = left outer join이기 때문에 좌측의 결과를 기준으로 우측을 맞추어 데이터 출력 

 

 

outer join과 inner join의 차이

- outer join 

 : 두 테이블의 합집합

- inner join

 : 두 테이블의 교집합

300x250
728x90