반응형
기본적으로 Join은 두 테이블의 관계를 엮어주는 명령어이다.
크게 4가지로
- INNER JOIN (내부 조인): 두 테이블을 JOIN 할 때 두 테이블에 모두 지정한 컬럼이 있어야 함
- OUTER JOIN (외부 조인): 두 테이블을 JOIN 할 때, 한쪽의 테이블에 데이터가 있어도 결과가 나옴
- CROSS JOIN (상호 조인): 한 테이블과 다른 테이블의 모든 행을 조인함
- SELF JOIN (셀프 조인): 자신이 자신과 JOIN, 1개의 테이블만 사용함.
INNER JOIN
주로 가장 많이 사용
SELECT <컬럼 명> FROM <TABLE1> INNER JOIN <TABLE2> ON <JOIN 조건>
위와 같이 사용되며 INNER JOIN에서 INNER는 생략이 가능하다.
즉,
SELECT <컬럼 명> FROM <TABLE1> JOIN <TABLE2> ON <JOIN 조건>
위와 같이 사용해도 INNER JOIN으로 취급한다.
한마디로, 교집합이 되는 컬럼을 갖고 있으면 쓸 수 있다.
OUTER JOIN
SELECT <컬럼 명> FROM <TABLE1 (LEFT 테이블)>
<LEFT, RIGHT, FULL> OUTER JOIN <TABLE2 (RIGHT 테이블)>
ON <조인 조건> WHERE ...
여기서 LEFT, RIGHT, FULL에 대해서 알아보면
- LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력
- RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력
- FULL OUTER JOIN: 두 테이블 모든 값이 출력
여기서 교집합을 뺀 차집합으로 알아보고자 한다면
각 반대되는 컬럼 값의 NULL을 찾으면 차집합이 된다.
CROSS JOIN
두 테이블을 모두 조인시키는 명령어로
테이블을 단순히 호출시킨 카티션 프로덕트(CARTESIAN PRODUCT) 연산과 같다.
SELECT * FROM <TABLE1> CROSS JOIN <TABLE2>
출력하면 TABLE1과 TABLE2의 모든 값을 출력한다.
SELF JOIN
셀프 조인은 자기 자신과 JOIN 하므로 한 개의 테이블만 사용한다.
SELECT <컬럼 명> FROM <TABLE1> AS A INNER JOIN <TABLE1> AS B WHERE ...
위와 같이 사용할 수 있다.
이미지 출처
반응형
'DB > MySQL' 카테고리의 다른 글
[Mysql] 프로그래머스 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2023.09.19 |
---|---|
[Mysql] 별칭(alias) 정렬 (0) | 2023.09.15 |
[Mysql] 조건문 CASE~ WHEN~ THEN~ 알아보기 (0) | 2023.09.15 |
[MYSQL] 날짜 관련 알아보기 (0) | 2023.09.12 |
[MySQL] 서브쿼리 (0) | 2022.10.03 |
댓글