티스토리 뷰

서버/데이터베이스

[SQL] 조인

sm.jeon 2024. 1. 17. 16:55
반응형

조인은 데이터베이스에서 데이터를 조회할 때,  여러 개의 테이블을 엮어야 조회할 수 있는 경우도 있다.

이때, 조인을 통해 두개의 테이블을 엮어 원하는 데이터를 조회할 수 있도록 하는 것이다.

 

Inner Join

기준테이블과 조인테이블 모두에 조인 컬럼이 존재하는 행을 조인한다.

SELECT [컬럼명] FROM [테이블1] JOIN [테이블2]
ON [테이블1.컬럼명] = [테이블2.컬럼명]
[WHERE 조건문]

 

ID age   ID name
1 20   2 "a"
2 25   3 "b"

 

ID age name
2 25 "a"

 

Natural Join

기준 테이블과 조인 테이블에서, 같은 컬럼(이름과 데이터타입이 같아야 함.)들로 Inner Join을 수행한다.

Inner Join의 일종이지만, Inner Join은 조인할 컬럼을 직접 지정해야 하지만, Natural Join은 조인할 컬럼을 자동으로 찾아 조인한다.

SELECT [컬럼명] FROM [테이블1]
NATURAL JOIN [테이블2]
[WHERE 조건문]
ID age   ID name
1 20   2 "a"
2 25   3 "b"

 

ID age name
2 25 "a"

 

Outer Join

Outer Join은 선택한 테이블 값을 유지하며 조인한다.

Left Outer Join, Right Outer Join, Full Outer Join 등이 있다.

Left Outer Join

왼쪽 테이블을 기준으로 일치하는 행은 조인되고, 일치하지 않는 행은 빈 곳이 null로 채워진다.

SELECT [컬럼명] FROM [테이블1] 
LEFT OUTER JOIN [테이블2]
ON [조인할 조건문]
[WHERE 조건문]
ID age   ID name
1 20   2 "a"
2 25   3 "b"

 

ID age name
1 20 null
2 25 "a"

Right Outer Join

Left Outer Join에서 기준 테이블과 조인 테이블이 바뀐 결과와 같다.

SELECT [컬럼명] FROM [테이블1] 
RIGHT OUTER JOIN [테이블2]
ON [조인할 조건문]
[WHERE 조건문]
ID age   ID name
1 20   2 "a"
2 25   3 "b"

 

ID age name
2 25 "a"
3 null "b"

Full Outer Join

Left Outer Join과 Right Outer Join의 모든 결과와 같다.

SELECT [컬럼명] FROM [테이블1] 
FULL OUTER JOIN [테이블2]
ON [조인할 조건문]
[WHERE 조건문]
ID age   ID name
1 20   2 "a"
2 25   3 "b"

 

ID age name
1 20 null
2 25 "a"
3 null "b"

Cross Join

기준 테이블과 조인 테이블의 각 행을 모두 조인한 결과이다.

SELECT [컬럼명] FROM [테이블1]
CROSS JOIN [테이블2]
ID age   ID name
1 20   2 "a"
2 25   3 "b"

 

ID age ID name
1 20 2 "a"
1 20 3 "b"
2 25 2 "a"
2 25 3 "b"

Self Join

1개의 테이블을 사용해 조인한다.

Inner Join과 문법이 같다.

SELECT [컬럼명] FROM [테이블1]
JOIN [테이블1]
ON [테이블1.컬럼명] = [테이블1.컬럼명]
[WHERE 조건문]

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함