Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • html5
  • 데이터 타입
  • Haskell
  • koa
  • Rust
  • go
  • PostgreSQL
  • redis
  • 알고리즘
  • Java
  • 하스켈
  • mysql
  • 프로그래머스
  • 문자열
  • javascript
  • CSS
  • React
  • Flutter
  • html
  • Til

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[PostgreSQL] Postgresql 강좌 - 9.JOIN 문법
백엔드/PostgresQL

[PostgreSQL] Postgresql 강좌 - 9.JOIN 문법

2023. 2. 5. 21:39
728x90

JOIN

 

JOIN 문법은 FROM에서 2개 이상의 테이블을 

결합하여 다수의 행을 검색하는 것을 말합니다.

 

JOIN의 일반적인 문법으로는 

다음과 같습니다.

T1 join_type T2 [ join_condition ]

JOIN할 두 테이블을 입력하고 어느 타입의

JOIN을 사용할 것인지 입력 해 줍니다.

 

JOIN절은 여러가지 타입이 존재하는데

 

JOIN Type

[INNER] JOIN
LEFT [OUTER] JOIN
RIGHT [OUTER] JOIN
FULL [OUTER] JOIN
CROSS JOIN

JOIN 타입에 대한 설명은 

다음과 같습니다.

JOIN 예제

 

예제를 실행하기 위해서 T1테이블과 

T2 테이블을 생성합니다.

CREATE TABLE T1(
    num integer PRIMARY KEY,
    name varchar(5)
);
num | name      //T1테이블
-----+------
   1 | a
   2 | b
   3 | c
 
CREATE TABLE T2(
    num integer PRIMARY KEY,
    value varchar(5)
);
num | value     //T2테이블
-----+-------
   1 | xxx
   3 | yyy
   5 | zzz

다음은 T6, T7 테이블의 INSERT JOIN 예제입니다.

T6 테이블의 num 값과 T7테이블에

 

num 값이같은 것을 INSERT JOIN

하여 출력합니다.

CREATE TABLE T6 (
     num integer PRIMARY KEY,    
     name varchar(5)
 );
    num  | name           
 --------+-----------                                                                                                       );                                                                                                                 num | name                                                                                                              --------------+-----------
       1 | a
       2 | b
       3 | c
       
CREATE TABLE T7(
    num integer PRIMARY KEY,
    value varchar(5)
);
num | value     //T2테이블
-----+-------
   1 | xxx
   3 | yyy
   5 | zzz

다음은 생성된 테이블에 각가의 값을

입력해 줍니다.

INSERT INTO T1 (num, name) VALUES 
    (1, xxx),
    (2, yyy),
    (3, zzz);
    
INSERT INTO T2 (num, name) VALUES 
    (1, a),
    (2, b),
    (5, c);

 

다음은 T6,T7 테이블의 INSERT JOIN 예제로

T6 테이블의 num 값과 T2 테이블의 num 값이 

같은 것을 INSERT JOIN 하여 출력합니다.

SELECT * 
   FROM T1 
  INNER JOIN T2 
      ON T1.num = T2.num;

 num | name | num | value
-----+------+-----+-------
   1 | xxx  |   1 | a
   3 | zzz  |   3 | b
(2 rows)

다음은 T1, T2테이블의 LEFT OUTER JOIN 

예제로 T1 테이블과 T2 테이블을 

 

INNER JOIN하여 왼쪽에 있는 T1 테이블의

모든 결과를 가져온 후 오른쪽 T2 테이블의

 

NUM 값을 매칭하여 매칭되는 데이터가

없는 경우 NULL 값을 넣습니다.

 

SELECT *
  FROM T1
  LEFT JOIN T2 
 USING(num);
 
 num | name | value
-----+------+-------
   1 | xxx  | a
   2 | yyy  |
   3 | zzz  | b
(3 rows)

다음은 T1, T2 테이블의 RIGHT OUTHER JOIN

예제로 T1 테이블과 T2 테이블을 INNER JOIN해 

 

오른쪽에 있는 T2테이블의 모든 결과를 

가져온 후 오른쪽 T1 테이블의 

 

NUM 값을 매칭하여 매칭되는 

데이터가 없을 경우 NULL 값을 넣습니다.

SELECT * 
  FROM T1
  RIGHT JOIN T2
    ON T1.num = T2.num;
    
  num | name | num | value
-----+------+-----+-------
   1 | xxx  |   1 | a
   3 | zzz  |   3 | b
     |      |   5 | c
(3 rows)

다음은 T1, T2 테이블의 FULL OUTER JOIN

예제로 FULL OUTER JOIN은 양쪽 T1,T2 

 

테이블의 모든 결과를 가져와서 

매칭시키고 데이터가 없는 경우 

NULL 값을 넣습니다.

SELECT *
   FROM T1
   FULL OUTER JOIN T2
    ON T1.num = T2.num;
 
 num | name | num | value
-----+------+-----+-------
   1 | xxx  |   1 | a
   2 | yyy  |     |
   3 | zzz  |   3 | b
     |      |   5 | c
(4 rows)

다음은 T1, T2 테이블의 CROSS JOIN 

예제로 CROSS JOIN은 T1, T2 테이블의

 

모든 행동은 JOIN 시킵니다.

결과는 두 테이블의 행의 개수를 

곱한 것과 같습니다.

 

SELECT * 
   FROM t1 
  CROSS JOIN t2;
 
 num | name | num | value
-----+------+-----+-------
   1 | xxx  |   1 | a
   1 | xxx  |   3 | b
   1 | xxx  |   5 | c
   2 | yyy  |   1 | a
   2 | yyy  |   3 | b
   2 | yyy  |   5 | c
   3 | zzz  |   1 | a
   3 | zzz  |   3 | b
   3 | zzz  |   5 | c
(9 rows)

 

참고 자료

 

JOIN

JOIN 문법 JOIN은 FROM에서 2개 이상의 테이블을 결합하여 다수의 행을 검색하는 것을 말합니다. JOIN의 일반적인 문법은 다음과 같습니다. ..

www.gurubee.net

 

'백엔드 > PostgresQL' 카테고리의 다른 글

[PostgreSQL] Postgresql 강좌 - 8.DML  (0) 2023.01.10
[PostgreSQL] Postgresql 강좌 - 7.SELECT 문법  (0) 2023.01.09
[PostgreSQL] Postgresql 강좌 - 6. 테이블 관리 (생성,변경, 삭제)  (0) 2022.04.10
    '백엔드/PostgresQL' 카테고리의 다른 글
    • [PostgreSQL] Postgresql 강좌 - 8.DML
    • [PostgreSQL] Postgresql 강좌 - 7.SELECT 문법
    • [PostgreSQL] Postgresql 강좌 - 6. 테이블 관리 (생성,변경, 삭제)
    • [PostgreSQL] Postgresql 강좌 - 5.제약 조건
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바