크리스의 개발일기

[MSSQL]OUTER JOIN, INNER JOIN이란 무엇인가? 본문

Database/SQL

[MSSQL]OUTER JOIN, INNER JOIN이란 무엇인가?

ChrisJang 2020. 11. 6. 18:13

JOIN 이란?

: 두 개 이상의 테이블이나 데이터베이스를 서로 엮어 조회하는 방법 

 

Inner Join

https://ko.wikipedia.org/wiki/%EA%B5%90%EC%A7%91%ED%95%A9

: (= 교집합) 서로 매칭 되는 것만 조회한다

Outer Join

https://www.edureka.co/blog/sql-joins-types

: (= 합집함) 매칭 되는 데이터뿐만 아니라 미매칭 데이터도 함께 조회된다.

: 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

 

출처 :

m.blog.naver.com/PostView.nhn?blogId=wideeyed&logNo=221435077767&proxyReferer=https:%2F%2Fwww.google.com%2F

blog.naver.com/wideeyed/221435115388

Comments