개발지식/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, 4
만 inner 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, 4
만 left 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
를 사용해 결과를 얻어야 합니다.