-
[SQLite] 외부 조인 (OUTER JOIN)Software/SQLite 2018. 1. 20. 16:59반응형
이전까지의 조인 연산이 종속 테이블의 참조키가 상위 테이블의 기본키를 참조하는 형태이었기에 만약 종속 테이블의 참조키가 NULL인 경우에는 조건 절의 결과 또한 NULL이 되어 해당 결과는 조회되지 않았다.
그러나 외부 조인의 경우는 두 테이블간의 지정된 연결 정보가 없는 데이터도 모두 조회가 가능하다. 즉 만약 정보가 없는 데이터를 포함해서 모든 레코드를 결과로 조회하고 싶은 경우에는 외부 조인을 사용하면 된다.
사용 방법은 FROM 절에서 OUTER JOIN을 추가하면 된다.
이 때 왼쪽 외부 조인(LEFT OUTER JOIN)과 오른쪽 외부 조인(RIGHT OUTHER JOIN), 완전 외부 조인(FULL OUTER JOIN)이 있는데 차이는 아래와 같다.
- 왼쪽 외부 조인(LEFT OUTER JOIN): 왼쪽 테이블의 모든 행이 검색(왼쪽 테이블 지정)
- 오른쪽 외부 조인(RIGHT OUTER JOIN): 오른쪽 테이블의 모드 행이 검색(오른쪽 테이블 지정)
- 완전 외부 조인(FULL OUTER JOIN): 양쪽 테이블의 모든 행이 검색.
- But 현재 SQLite3 버전에서는 오직 왼쪽 외부 조인(LEFT OUTER JOIN)만 지원
sqlite> SELECT * FROM cars;
car_id|brand_id|name|price
1|1|Sonata|1500000
3|2|K5|1500000
4|2|K3|1200000
5|2|K7|2200000
6|NULL|320d|4000000
sqlite> SELECT cars.name, cars.price, carBrand.brandName
...> FROM cars INNER JOIN carBrand
...> ON cars.brand_id = carBrand.brand_id;
name|price|brandName
Sonata|1500000|Hyundai
K5|1500000|Kia
K3|1200000|Kia
K7|2200000|Kia
sqlite> SELECT cars.name, cars.price, carBrand.brandName
...> FROM cars LEFT OUTER JOIN carBrand
...> ON cars.brand_id = carBrand.brand_id;
name|price|brandName
Sonata|1500000|Hyundai
K5|1500000|Kia
K3|1200000|Kia
K7|2200000|Kia
320d|4000000|NULL
위 결과를 보면 내부 조인(INNER JOIN)에서는 조회되지 않았던 (320d, 4000000, NULL) 값이 외부 조인(OUTER JOIN)에는 포함되어 있는 것을 볼 수 있다.
반응형'Software > SQLite' 카테고리의 다른 글
[SQLite] 테이블 제약 조건 (0) 2018.03.19 [SQLite] 인덱스(INDEX) (0) 2018.03.19 [SQLite] 자연 조인(NATURAL JOIN) (0) 2018.01.20 [SQLite] 자체 조인 (SELF JOIN) (0) 2018.01.14 [SQLite] 내부 조인(Inner Join) (0) 2018.01.13 댓글