Database/SQL
[MSSQL]OUTER JOIN, INNER JOIN이란 무엇인가?
ChrisJang
2020. 11. 6. 18:13
JOIN 이란?
: 두 개 이상의 테이블이나 데이터베이스를 서로 엮어 조회하는 방법
Inner Join
: (= 교집합) 서로 매칭 되는 것만 조회한다
Outer Join
: (= 합집함) 매칭 되는 데이터뿐만 아니라 미매칭 데이터도 함께 조회된다.
: A(=Left), B(=right) 기준을 어디에 두냐에 따라 기준 테이블 값 + 테이블과 기준 테이블의 중복된 값이 보인다.
: Outer Join은 매칭뿐만 아니라 미매칭 데이터도 함께 조회한다.
: Outer Join에는 Left Outer Join, Right Outer Join, Full Outer Join이 있다.
: Left, Right는 미매칭 데이터도 조회할 테이블 방향이다.
- 따라서 Left Outer Join은 왼쪽에 기입한 테이블이 매칭여부와 관계없이 모두 나오게 된다.
기본 테이블 정보
CREATE TABLE A(
CODE INT NOT NULL,
CODE_NAME NCHAR(100) NOT NULL
CONSTRAINT PK_A PRIMARY KEY(CODE)
);
CREATE TABLE B(
CODE INT NOT NULL,
CODE_NAME NCHAR(100) NOT NULL
CONSTRAINT PK_B PRIMARY KEY(CODE)
);
INSERT INTO A(CODE, CODE_NAME) VALUES(1, 'ALPHA')
INSERT INTO A(CODE, CODE_NAME) VALUES(2, 'BETA')
INSERT INTO B(CODE, CODE_NAME) VALUES(2, 'BETA')
INSERT INTO B(CODE, CODE_NAME) VALUES(3, 'GAMMA')
Inner Join
1) 테이블 A와 테이블 B 모두에 존재하는 코드를 조회한다.
SELECT *
FROM A INNER JOIN B ON A.CODE = B.CODE
Outer Join
2) 테이블 A에만 존재하는 코드를 조회한다.
SELECT *
FROM A LEFT OUTER JOIN B ON A.CODE = B.CODE
WHERE B.CODE IS NULL
3) 테이블 A의 모든 코드는 매칭여부와 관계없이 모두 조회한다.
SELECT *
FROM A LEFT OUTER JOIN B ON A.CODE = B.CODE
4) A테이블과 B테이블 매칭이 안 되는 나머지를 모두 조회한다.
SELECT *
FROM A FULL OUTER JOIN B ON A.CODE = B.CODE
WHERE A.CODE IS NULL OR B.CODE IS NULL
출처 :