PostgreSQL JOIN 내부 조인, 왼쪽 조인, 오른쪽 조인 및 완전 외부 조인을  활용하는 방법

 

- 관련 테이블 간의 공통 열 값을 기반으로 한 개 이상의 테이블 에서 열을 결합하는데 사용합니다.

- 공통 열은 일반적으로 첫 번째 테이블의 기본키 열과 두 번째 테이블의 외래 키 열입니다.

 


0) 샘플 테이블 지정

CREATE TABLE basket_a (
    a INT PRIMARY KEY,
    fruit_a VARCHAR (100) NOT NULL
);

CREATE TABLE basket_b (
    b INT PRIMARY KEY,
    fruit_b VARCHAR (100) NOT NULL
);

INSERT INTO basket_a (a, fruit_a)
VALUES
    (1, 'Apple'),
    (2, 'Orange'),
    (3, 'Banana'),
    (4, 'Cucumber');

INSERT INTO basket_b (b, fruit_b)
VALUES
    (1, 'Orange'),
    (2, 'Apple'),
    (3, 'Watermelon'),
    (4, 'Pear');

 

1) PostgreSQL 내부 JOIN 연산자

-- basket_a(first)와 basket_b(second)를 fruite_a,b로 조인하는 쿼리
SELECT
    a,
    fruit_a,
    b,
    fruit_b
FROM
    basket_a
LEFT JOIN basket_b 
    ON fruit_a = fruit_b
WHERE b IS NULL;

- 내부 조인은 첫 번째 테이블의 각 행을 검사합니다.

- frute_a 열 값을 두 번째 테이블의 각 행 열의 값과 비교합니다.

- 이러한 값이 같다면 내부 조인은 두 테이블의 열을 포함하는 새 행을 만들고 이 새 행을 결과 집합에 추가합니다.

 

 

2) PostgreSQL 왼쪽 JOIN 연산자

SELECT
    a,
    fruit_a,
    b,
    fruit_b
FROM
    basket_a
LEFT JOIN basket_b 
   ON fruit_a = fruit_b;

- fruit_a 열의 값을 두 번째 테이블의 fruit_b 열 값과 비교합니다.

- 이러한 값이 같으면 왼쪽 조인은 두 테이블의 열을 포함하는 새 행을 만들고 이 새행을 결과 집합에 추가합니다.

- 값이 같지 않은 경우 왼쪽 조인도 두 테이블의 열을 포함하는 새 행을 만들고 NULL이라는 결과로 집합에 추가합니다.

 

 

3) PostgreSQL 왼쪽 JOIN 연산자 - ONLY LEFT

-- 오른쪽 테이블에 일치하는 행이 없는 왼쪽 테이블의 행을 선택하는 쿼리
SELECT
    a,
    fruit_a,
    b,
    fruit_b
FROM
    basket_a
LEFT JOIN basket_b 
    ON fruit_a = fruit_b
WHERE b IS NULL;

- LEFT JOIN과 동일합니다. LEFT OUTER JOIN을 써도 됩니다.

 

4) PostgreSQL 오른쪽 JOIN 연산자

SELECT
    a,
    fruit_a,
    b,
    fruit_b
FROM
    basket_a
RIGHT JOIN basket_b ON fruit_a = fruit_b;

 

5) PostgreSQL 오른쪽 JOIN 연산자 - ONLY RIGHT

SELECT
    a,
    fruit_a,
    b,
    fruit_b
FROM
    basket_a
RIGHT JOIN basket_b 
   ON fruit_a = fruit_b
WHERE a IS NULL;

 

6) PostgreSQL 외부 JOIN 연산자

SELECT
    a,
    fruit_a,
    b,
    fruit_b
FROM
    basket_a
FULL OUTER JOIN basket_b 
    ON fruit_a = fruit_b;

- 전체가 반환에 가능한 경우 양쪽에서 일치하는 행이 모두 포함된 결과를 나타냅니다.

- 일치하는 항목이 없을 경우 테이블의 열이 NULL로 채워집니다.

 

7) PostgreSQL 외부 JOIN 연산자 - ONLY UNIQUE TO BOTH TABLES

SELECT
    a,
    fruit_a,
    b,
    fruit_b
FROM
    basket_a
FULL JOIN basket_b 
   ON fruit_a = fruit_b
WHERE a IS NULL OR b IS NULL;

- 다른 테이블에 행이 없는 테이블의 행을 반환하는 전체 외부 조인입니다.


반응형

'SW ENGINEERING > Postgres' 카테고리의 다른 글

[PostgreSQL] BASIC - Cross JOIN  (0) 2021.09.02
[PostgreSQL] BASIC - Table Aliases  (0) 2021.09.02
[PostgreSQL] BASIC - IS NULL  (0) 2021.09.02
[PostgreSQL] BASIC - LIKE  (0) 2021.09.02
[PostgreSQL] BASIC - BETWEEN  (0) 2021.09.02
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기