Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 배열중복요소제거
- app:compiledebugkotlin
- mainapplication.kt
- interface
- 이진탐색
- reactnative
- array
- 리액트네이티브아이콘
- 스크롤이벤트
- 슬라이딩윈도우
- materialicons
- Filter
- extends
- set
- Spring
- 안드로이드빌드에러
- 페이지네이션
- javascript
- app.post
- generic
- 상속
- TS
- 타입스크립트
- react
- map
- supabase 페이지네이션
- async
- Next.js
- 글또10기
- meatadata
Archives
- Today
- Total
rhanziy
SQL - OUTER JOIN 외부조인 본문
OUTER JOIN은 조인하는 여러테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것입니다. 즉, 조건에 맞지 않아도 해당하는 행을 출력하고 싶을 때 사용할 수 있습니다.
OUTER JOIN 종류
- LEFT OUTER JOIN : 조인문의 왼쪽에 있는 테이블의 모든 결과를 가져온 후 오른쪽 테이블의 데이터를 매칭, 매칭되는 데이터가 없는 경우 NULL로 표시한다.
SELECT 검색할 컬럼
FROM 테이블명 A LEFT OUTER JOIN 테이블명2 B
ON A.컬럼명 = B.컬럼명;
- RIGHT OUTER JOIN : 조인문의 오른쪽에 있는 테이블의 모든 결과를 가져온 후 왼쪽 테이블의 데이터를 매칭, 매칭되는 데이터가 없는 경우 NULL로 표시한다.
SELECT 검색할 컬럼
FROM 테이블명 A RIGHT OUTER JOIN 테이블명2 B
ON A.컬럼명 = B.컬럼명;
- FULL OUTER JOIN : LEFT + RIGHT OUTER JOIN으로, 양쪽 조건이 일치하지 않더라도 모두 결합해 출력한다.
SELECT 검색할 컬럼
FROM 테이블명 A FULL OUTER JOIN 테이블명2 B
ON A.컬럼명 = B.컬럼명;
* MySQL에서는 FULL OUTER JOIN이 없으므로, LEFT OUTER JOIN과 RIGHT OUTER JOIN을 UNION하여 결과값을 도출한다.
INNER JOIN은 조인의 양쪽 테이블 모두 레코드가 존재하는 경우에만 레코드가 반환된다.
하지만 OUTER JOIN은 아우터 테이블에 존재하면 레코드가 반환된다.
쿼리나 테이블의 구조를 살펴보면 OUTER JOIN을 사용하지 않아도 될 것을 OUTER JOIN으로 사용할 때가 상당히 많다.
DBMS 사용자 가운데 INNER JOIN을 사용했을 때, 레코드가 결과에 나오지 않을까 걱정하는 사람들이 꽤 있는 듯하다.
OUTER JOIN과 INNER JOIN은 저마다 용도가 다르므로 적절한 사용법을 익히고 요구되는 요건에 맞게 사용하는 것이 중요하다.
때로는 그 반대로 OUTER JOIN으로 실행하면 쿼리의 처리가 느려진다고 생각하고, 억지로 INNER JOIN으로 쿼리를 작성할 때도 있다. 하지만 가져오는 쿼리의 결과 건수가 같다면 성능 차이는 거의 생기지 않는다.
'Java' 카테고리의 다른 글
Spring - Spring Interceptor 스프링 인터셉터 (0) | 2023.04.21 |
---|---|
SQL - 쿼리 분석 (0) | 2023.04.18 |
Java - 제네릭 클래스 (0) | 2023.04.11 |
Java - 제네릭스 (1) | 2023.04.11 |
Java - 추상클래스와 인터페이스 (0) | 2023.04.10 |
Comments