티스토리 뷰
반응형
조인은 데이터베이스에서 데이터를 조회할 때, 여러 개의 테이블을 엮어야 조회할 수 있는 경우도 있다.
이때, 조인을 통해 두개의 테이블을 엮어 원하는 데이터를 조회할 수 있도록 하는 것이다.
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 조건문]
반응형
'서버 > 데이터베이스' 카테고리의 다른 글
[Redis] redis-cli 명령어 (0) | 2024.02.08 |
---|---|
[DB] NoSQL, RDB, In-memory DB (0) | 2024.01.26 |
[SQL] DML (Data Manipulation Language, 데이터 조작 언어) (0) | 2024.01.16 |
[SQL] DDL (Data Definition Language, 데이터 정의어) (0) | 2024.01.16 |
[DB] Database Object (0) | 2024.01.16 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 동기점
- 가상 회선
- 포트 주소
- Internetworking
- 라우팅
- 사설 IP 주소
- 세션 계층
- TTL
- 데이터링크
- OSI 7계층
- 서비스 프리미티브
- 와일드카드 마스크
- 세션 연결
- Service Primitive
- 통합점
- 거리 벡터 라우팅
- 리키 버킷
- 표현 계층
- 혼잡
- 네임 서버
- HTTP
- ECN 패킷
- 데이터링크 계층
- 네트워크
- 전송 계층
- 네트워크 계층
- IP
- 교환 시스템
- 오류 제어
- 링크 상태 라우팅
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함