일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Queue
- 자바
- StringTokenizer
- Stack
- 클라이언트
- index of
- COS Pro
- 프로그래머스 자바
- 프로그래머스 문자열 정렬
- 삼각형의 완성조건
- 큐
- 버퍼
- 스택
- Programmers
- SWEA
- 프로그래머스 풀이
- lv2
- Lv1
- 백준
- 스프링부트 도커
- 프로그래머스
- 문자열
- 오름차순 정렬
- 백준 N과 M 자바
- java
- lv0
- 알고리즘
- 이진수 변환
- 스프링부트 도커로 배포
- 스프링부트 도커 배포
- Today
- Total
mun dev
[SQL] Join 이란, Join의 종류, inner join과 outer join의 차이점 본문
SQL에서의 JOIN이란?
관계형 데이터 베이스는 중복 데이터를 피하기 위해서 데이터를 여러개의 테이블로 나눠서 저장하게 된다.
이렇게 분리되어 저장된 데이터를 사용자가 원하게끔 다시 도출하기 위해서 여러 테이블을 조합해야할 때가 있다. 이때 SQL의 join을 통해서 이를 만들 수 있게 된다.
Join의 종류
- INNER JOIN
- LEFT OUTER JOIN
- RIGHT OUTER JOIN
- FULL OUTER JOIN
- CROSS JOIN
- SELF JOIN
1. INNER JOIN
교집합으로, 기준 테이블과 join 테이블의 중복된 값을 보여준다.
SELECT A.NAME, B.AGE
FROM EX_TABLE A INNER JOIN EX_TABLE2 B
ON A.NO_EMP = B.NO_EMP
2. LEFT OUTER JOIN
기준 테이블값과 조인 테이블과 중복된 값을 보여준다.
왼쪽테이블 기준으로 JOIN을 한다고 생각하면 편하다.
SELECT A.NAME, B.AGE
FROM EX_TABLE A LEFT OUTER JOIN EX_TABLE2 B
ON A.NO_EMP = B.NO_EMP
3. RIGHT OUTER JOIN
LEFT OUTER JOIN과는 반대로 오른쪽 테이블 기준으로 JOIN하는 것이다.
SELECT A.NAME, B.AGE
FROM EX_TABLE A RIGHT OUTER JOIN EX_TABLE2 B
ON A.NO_EMP = B.NO_EMP
4. FULL OUTER JOIN
합집합을 말한다. A와 B 테이블의 모든 데이터가 검색된다
SELECT A.NAME, B.AGE
FROM EX_TABLE A FULL OUTER JOIN EX_TABLE2 B
ON A.NO_EMP = B.NO_EMP
5. CROSS JOIN
모든 경우의 수를 전부 표현해주는 방식
A가 3개, B가 4개면 3*4 = 12개의 데이터가 검색
SELECT A.NAME, B.AGE
FROM EX_TABLE A CROSS JOIN EX_TABLE2 B
ON A.NO_EMP = B.NO_EMP
6. SELF JOIN
자기 자신과 자기 자신을 조인하는 것이다.
하나의 테이블을 여러번 복사해서 조인한다고 생각하면 편하다.
자신이 갖고 있는 컬럼을 다양하게 변형시켜 활용할 때 자주 사용한다.
SELECT A.NAME, B.AGE
FROM EX_TABLE A, EX_TABLE2 B
Join 정리
INNER JOIN
: 두 테이블의 조건만 일치하는 결과 집합을 반환한다.
OUTER JOIN
: 조건 일치 여부에 관계 없이 두 테이블에서 모든 값의 결과 집합을 반환한다.
LEFT JOIN
: 왼쪽 테이블의 모든 값과 오른쪽 테이블의 조건과 일치하는 행의 결과 집합을 반환한다.
RIGHT JOIN
: 오른쪽 테이블과 모든 값과 왼쪽 테이블의 조건과 일치하는 행의 결과 집합을 반환한다.
INNER JOIN과 OUTER JOIN의 차이점
: 조인이 되는 키 값을 기준으로
INNER JOIN의 경우는 교집합, OUTER JOIN의 경우는 기준테이블 Key의 집합이라고 생각하면 된다.
INNER JOIN은 공통된 primary key에 대해서 둘다 값이 있는 거만 보여주고
(NULL값을 포함하지 않는다.)
OUTER 조인은 대상이 되는 OUTER에 있는 primary key기준으로 테이블을 합치면서 반대쪽에 없는 값은 레코드를 null로 둔다.
'DB' 카테고리의 다른 글
[DB] 락(LOCK)이란? (1) | 2024.02.06 |
---|---|
[DB] 데이터베이스 기초 개념 및 정리 (0) | 2024.02.01 |
[DB] DDL, DML, DCL 종류 및 개념 (0) | 2024.01.19 |
[DB] SQL CASE WHEN THEN 구문 사용법 (0) | 2023.10.29 |
[DB] Mac에 MariaDB 설치하기 + GUI(Sequel Pro) (0) | 2023.08.02 |