츄르사려고 코딩하는집사입니다.
데이터베이스(DB) JOIN(INNER JOIN / LEFT JOIN / RIGHT JOIN / OUTER JOIN) 정리
데이터의 중요성이 커지고 있는 지금, DB를 활용한 웹사이트, 모바일, 관련 서비스들은 DB를 필수적으로 사용해야 하며, DB의 중요성이 커지고 있다. 그렇기에, DB와의 연동으로 DB에서 데이터를 가져오는 기술은 성능에 따라 얼마나 빨리 가져오는지 성능 최적화에 관심이 커지고 있다. JOIN의 종류에 따라 DB의 성능의 판가름을 할 수 있다고 볼 수 있다.
1. JOIN이란?
JOIN은 데이터베이스 내에서 2개 이상의 테이블을 합쳐 SELECT를 하는 방법 중 하나입니다. 즉, 아래의 사진에서 A와 B라는 테이블을 합쳐 A와 B의 교집합 부분을 제외한 A와 B를 출력하던지, 교집합 부분을 출력하던지, 아니면 A와 B의 합집합을 출력하던지 등을 할 수 있습니다.
2. JOIN 주의사항
1) 테이블을 JOIN하려면 최소 1개 이상의 같은 컬럼을 가지고 있어야 한다.
2) 2개 이상의 테이블을 JOIN하기 때문에, 모든 컬럼의 참조는 명확하게 사용해야 한다.
- 예를 들어, A와 B 컬럼을 조인하면 아래와 같이 테이블명과 컬럼을 명확하게 써야 한다.
SELECT A.COL
FROM A INNER JOIN B
ON A.KEY = B.KEY;
3) 기본적으로, 어떤 JOIN인지 사용하지 않으면 DEFAULT로 INNER JOIN을 사용한다.
3. INNER JOIN
- INNER JOIN은 내부조인을 말한다.
- 아래의 사진과 같이 A와 B라는 테이블이 있을 때 A 테이블과 B 테이블의 교집합을 말한다.
- 즉, A값 전체와 A와 B 테이블의 KEY값이 같은 것들을 가져올 수 있다.
- INNER JOIN을 하는 코드는 아래와 같다.
SELECT COLUMN
FROM A INNER JOIN B
ON A.KEY = B.KEY
4. OUTER JOIN
- OUTER JOIN은 외부 조인이라고 한다.
- 아래의 사진과 같이 2가지로 나뉜다.
- 첫 번째로, A 테이블과 B 테이블 합집합.
- 두 번째로, A 테이블과 B 테이블 합집합에서 교집합을 뺀 것.
1) A 테이블과 B테이블 합집합.
- 위의 경우에는 아래의 코드로 사용하면 된다.
SELECT COLUMN
FROM A OUTER JOIN B
ON A.KEY = B.KEY
2) A 테이블과 B 테이블 합집합에서 교집합을 뺀 것.
- 위의 경우에는 아래의 코드로 사용하면 된다.
SELECT COLUMN
FROM A OUTER JOIN B
ON A.KEY = B.KEY
WHERE A.KEY IS NULL
AND B.KEY IS NULL
5. LEFT JOIN
- LEFT JOIN은 왼쪽 조인이라고 한다.
- 즉, A 테이블과 B 테이블이 있을 때, A 테이블 전체와 A테이블에서 B테이블의 교집합을 뺀 것으로 나뉜다.
1) A 테이블 전체 LEFT JOIN
- 위의 경우에는 아래의 코드로 사용하면 된다.
SELECT COLUMN
FROM A LEFT JOIN B
ON A.KEY = B.KEY
WHERE A.KEY = B.KEY
2) A 테이블과 B 테이블의 교집합을 뺀 A 테이블 LEFT JOIN
- 위의 경우에는 아래의 코드로 사용하면 된다.
SELECT COLUMN
FROM A LEFT JOIN B
ON A.KEY = B.KEY
WHERE B.KEY IS NULL
6. RIGHT JOIN
- RIGHT JOIN은 오른쪽 조인이라고 한다.
- RIGHT JOIN은 A 테이블과 B 테이블이 있을 때, B 테이블 전체와 B 테이블에서 A 테이블과 B 테이블의 교집합을 뺀 것으로 나뉜다.
1) B 전체 RIGHT JOIN.
- 위의 경우에는 아래의 코드로 사용하면 된다.
SELECT COLUMN
FROM A RIGHT JOIN B
ON A.KEY = B.KEY
2) B 테이블에서 A 테이블과 B 테이블의 교집합을 뺀 것.
- 위의 경우에는 아래의 코드로 사용하면 된다.
SELECT COLUMN
FROM A RIGHT JOIN B
ON A.KEY = B.KEY
WHERE A.KEY IS NULL
'IT > DB' 카테고리의 다른 글
[DB] Function 및 프로시저 추출 스크립트 PL/SQL로 생성하는 방법 (0) | 2022.10.05 |
---|---|
티베로(Tibero) 엑셀파일 업로드 하는 방법(expImp 사용 X, Tibero Studio 2) (0) | 2022.04.07 |
엑셀(Excel)에서 2개 이상의 열을 기준으로 중복값 찾기 (0) | 2022.04.07 |
SQL WHERE 1=1과 1=2 사용하는 이유 (0) | 2022.02.10 |
데이터베이스(DB) 서브쿼리(SubQuery) 정리 (1) | 2021.04.06 |
데이터베이스(DB) JOIN 정리 (0) | 2021.04.06 |
MySQL 데이터베이스 정리 (0) | 2021.04.06 |
JDBC(Java DataBase Connectivity) INSERT 기초 예제 (0) | 2021.03.11 |
최근댓글