Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

The Office Lover

PostgreSQL Joins 본문

DataBase

PostgreSQL Joins

Michael Gary Scott 2023. 7. 31. 15:12

소개

 조인(JOIN)은 두 개 이상의 데이블을 연결하여 필요한 데이터를 효과적으로 가져오는 데 사용되는 기능입니다. 일반적으로는 데이터베이스에는 여러 개의 테이블이 있고, 이러한 테이블들은 서로 연관되어 있습니다. 조인(JOIN)을 사용하여 이러한 테이블들을 결합하면 하나의 쿼리로 더 많은 정보를 얻을 수 있습니다. 

 

 PostgreSQL 조인(JOIN)은 관련 테이블 간의 공통 칼럼값을 기반으로 하나 이상의 테이블에서 칼럼들을 결합하여 원하는 값을 가져오는 데 사용합니다.

 

 일반적으로 첫 번째 테이블의 기본 키(Primary Key)와 두 번째 테이블의 외래 키(Foreign Key)를 결합하는데 사용합니다.

 

 

예제 테이블 설정

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');

아래 설명과 함께 위 예제를 통해 직접 쿼리를 작성하면 이해하는데 도움이 됩니다.

 

 

 

PostgreSQL Joins

 

PostgreSQL이 지원하는 Join 문법의 종류

  1.  inner join
  2.  left join
  3.  right join
  4.  full outer join
  5.  cross join
  6.  natural join
  7.  self join

여기서 위 1~4번에 해당되는 JOIN 문법만 알아보겠습니다.

 

 

 

 

각 Join 문법별 설명

PostgreSQL Joins

1. INNER JOIN 

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

INNER JOIN은 두 테이블 간의 일치하는 값을 가져옵니다. 조인 기준 컬럼의 값이 두 테이블에 모두 존재하는 경우에만 결과로 반환됩니다. 

PostgreSQL Joins

 

 

 

 

2. LEFT JOIN (or LEFT OUTER JOIN)

PostgreSQL Joins

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

LEFT JOIN은 왼쪽 테이블(basket_a)의 모든 레코드를 가져오고, 오른쪽 테이블(basket_b)과 조인 기준 칼럼의 값이 일치하는 경우 오른쪽 테이블의 해당 레코드를 가져옵니다. 오른쪽 테이블에 일치하는 값이 없어도 왼쪽 테이블의 모든 레코드는 결과에 포함됩니다.

PostgreSQL Joins

 

 

오른쪽 테이블에 일치하는 값이 없는 왼쪽 테이블의 값만 조회하려면 WHERE 조건절을 아래와 같이 사용할 수 있습니다.

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

PostgreSQL Joins

 

 

 

 

 

 

3. RIGHT JOIN (or RIGHT OUTER JOIN)

PostgreSQL Joins

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

LEFT JOIN의 반대 버전이 RIGHT JOIN입니다. 오른쪽 테이블(basket_b)의 모든 레코드를 가져오고, 왼쪽 테이블(basket_a)과 조인 기준 칼럼의 값이 일치하는 경우 왼쪽 테이블의 해당 레코드를 가져옵니다. 왼쪽 테이블에 일치하는 값이 없어도 오른쪽 테이블의 모든 레코드는 결과에 포함됩니다.

 

 

왼쪽 테이블에 일치하는 값이 없는 오른쪽 테이블의 값만 조회하려면 WHERE 조건절을 아래와 같이 사용할 수 있습니다.

PostgreSQL Joins

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

PostgreSQL Joins

 

 

 

 

 

4. FULL OUTER JOIN (or FULL JOIN)

PostgreSQL Joins

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

FULL JOIN은 LEFT JOIN과 RIGHT JOIN의 결과 모두를 합한 것입니다. 두 테이블 간의 모든 레코드를 가져오고, 조인 기준 컬럼의 값이 일치하는 경우에 해당 레코드를 가져오며, 한쪽 테이블에만 일치하는 값이 있는 경우에도 해당 레코드를 가져옵니다. 

 

 

WHERE 조건절을 이용하여 각 테이블에만 해당되는 값만을 반환할 수 있습니다.

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;

PostgreSQL Joins

 

 

 

 

 

마무리

위 내용을 참조로 조인 쿼리를 사용하여 익숙해지면 자연스럽게 쿼리 실력이 늘게 됩니다. 중요한 점은 항상 조회된 데이터 값에 대한 검증이 필요합니다. 복잡한 조인 쿼리 일 수록 항상 반대로 검증 쿼리먼저 작성하는 습관이 중요합니다.

PostgreSQL Joins

 

 

 

 


출처

 

https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-joins/

 

PostgreSQL Joins: A Visual Explanation of PostgreSQL Joins

Summary: in this tutorial, you will learn about various kinds of PostgreSQL joins including inner join, left join, right join, and full outer join. PostgreSQL join is used to combine columns from one (self-join) or more tables based on the values of the co

www.postgresqltutorial.com

 

'DataBase' 카테고리의 다른 글

Commit과 Rollback  (0) 2023.07.31
PostgreSQL - RDBMS  (0) 2023.07.24