개발지식/MySQL

join 사용법, inner join, left join, union

다오__ 2023. 5. 1. 18:21

내일배움캠프의 엑셀보다 쉬운 SQL 수업 3주차 바탕으로 작성하였습니다.

1. join

조인이란 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것입니다.
즉, 가져와야 할 필요 데이터가 여러테이블을 합쳐야 하는 경우 사용하게 됩니다.

2. 자주 쓰이는 join의 종류

- inner join

inner join은 각 테이블의 공통 부분(교집합)만을 추출하여 나타냅니다. null값이 있는 데이터인 경우 제외됩니다.

`inner join` 의 예제입니다.

a | b
-----
1 | 3
2 | 4
3 | 5
4 | 6

두 개의 테이블이 있다고 가정합니다.

select * from a 
INNER JOIN b on a.a = b.b;
select a.*,b.*  from a,b where a.a = b.b;

a | b = 
---------
1 | 3 | 3
2 | 4 | 4
3 | 5 |
4 | 6 |

a의 테이블과 b의 테이블 안의 공통 값인 3, 4inner join 으로 나타납니다.
활용도가 높은 join이며 실제로도 가장 많이 쓰이는 조인입니다.

- left join

left join은 왼쪽 테이블의 전체부분과 오른쪽 테이블의 공통부분만을 추출하여 나타냅니다. 공통부분이 아닌부분은 null로 나타납니다.

select * from a LEFT OUTER JOIN b on a.a = b.b;
select a.*,b.*  from a,b where a.a = b.b(+);

a | b = 
---------
1 | 3 | 1
2 | 4 | 2
3 | 5 | 3
4 | 6 | 4
      | null
      | null

a의 테이블 전체와 b테이블 공통부분인 3, 4left join 으로 나타납니다.
inner join만으로 해결할 수 없는 null값이 필요한 경우 사용하는 조인입니다.

3. union

union은 두 개 이상의 SQL 쿼리문을 합치는 데 사용됩니다.
여러개에 쿼리문을 사용하여 하나에 데이터로 출력해야할 때 사용하는 연산자 입니다.

 select * from a

 UNION

 select * from b

 a | b = 
 ---------
 1 |   | 1
 2 |   | 2
 3 } 3 | 3
 4 | 4 | 4
   | 5 | 5
   | 6 | 6

union 연산자는 order by 명령어가 적용이 되질 않습니다. 따라서 order by 가 필요한 경우 subquery를 사용해 결과를 얻어야 합니다.