17강 SQL이 뭐지? PostgreSQL RIGHT JOIN
PostgreSQL
SQL이 뭐지? 17강 시작합니다.
이번 강의에서는
▶ PostgreSQL RIGHT JOIN clause
에 대해서 알아보겠습니다.
지난 강의 14강에서 살펴본 JOIN에 대해서 하나씩 심화 학습하는 시간입니다.
Setting up sample tables
다음과 같은 두 개의 테이블 films와 film_review가 있다고 가정합니다.
실습을 위해 테이블을 생성하고 데이터를 입력합니다.
DROP TABLE IF EXISTS films;
DROP TABLE IF EXISTS film_reviews;
CREATE TABLE films(
film_id SERIAL PRIMARY KEY,
title varchar(255) NOT NULL
);
INSERT INTO films(title)
VALUES('Joker'),
('Avengers: Endgame'),
('Parasite');
CREATE TABLE film_reviews(
review_id SERIAL PRIMARY KEY,
film_id INT,
review VARCHAR(255) NOT NULL
);
INSERT INTO film_reviews(film_id, review)
VALUES(1, 'Excellent'),
(1, 'Awesome'),
(2, 'Cool'),
(NULL, 'Beautiful');
commit;
films는 0개 또는 많은 film_review를 가질 수 있으며 film_review는 0개 또는 하나의 영화에 속합니다.
films의 film_id 열은 film_reviews 테이블의 film_id 열을 참조합니다.
생성 후 데이터를 확인합니다.
SELECT * FROM films;
SELECT * FROM film_reviews;
film_id 1은 두 개의 리뷰를 가지고 있다. film_id 2는 1개의 리뷰가 있다. film_id 3는 리뷰가 없다.
review_id 4는 필름과 연결되지 않습니다.
Introduction to PostgreSQL RIGHT JOIN clause
다음 쿼리는 RIGHT JOIN을 사용하여 films 및 film_reviews 테이블에서 데이터를 선택합니다.
SELECT
review,
title
FROM
films
RIGHT JOIN film_reviews
ON film_reviews.film_id = films.film_id
;
RIGHT JOIN의 순서
이 문에서 films는 왼쪽 테이블이고 film_reviews는 오른쪽 테이블입니다.
RIGHT JOIN 절은 오른쪽 테이블(film_reviews)에서 데이터 선택을 시작합니다.
오른쪽 테이블(film_reviews)의 각 행에 대해 film_reviews 테이블의 film_id 열의 값이 왼쪽 테이블(films)의 모든 행의 film_id 열의 값과 동일한지 확인합니다.
둘이 같으면 오른쪽 조인은 SELECT 절에 지정된 두 테이블의 열을 포함하는 새 행을 만들고 결과 집합에 이 새 행을 포함합니다.
그렇지 않으면 오른쪽 조인은 두 테이블의 열을 포함하고 결과 집합에 이 새 행을 포함하는 새 행을 여전히 만듭니다. 그러나 왼쪽 테이블(films)의 열을 NULL로 채웁니다.
즉, 오른쪽 조인은 왼쪽 테이블에서 일치하는 행이 있는지 여부에 관계없이 오른쪽 테이블에서 모든 행을 선택합니다.
films 및 film_reviews 테이블의 데이터를 기반으로 합니다.
review_id 1은 film_id 1과 일치합니다.
review_id 2는 film_id 1과 일치합니다.
review_id 3은 film_id 2와 일치합니다.
review_id 4는 일치하는 film_id가 없습니다. null로 채워집니다.
RIGHT JOIN과 RIGHT OUTER JOIN 은 같은 것입니다. OUTER 키워드는 선택 사항입니다.
다음 Venn 다이어그램은 RIGHT JOIN의 작동 방식을 보여줍니다.
PostgreSQL RIGHT JOIN with USING syntax
조인된 열의 이름(film_id)이 동일하기 때문에 다음과 같이 조인 술어에 USING 구문을 사용할 수 있습니다.
SELECT review, title
FROM films
RIGHT JOIN film_reviews USING (film_id)
;
이 쿼리는 ON 절을 사용한 경우와 동일한 결과를 반환합니다.
PostgreSQL RIGHT JOIN with WHERE clause
왼쪽 테이블에 해당하는 행이 없는 오른쪽 테이블의 행을 찾으려면 다음과 같은 WHERE 절을 추가합니다.
SELECT review, title
FROM films
RIGHT JOIN film_reviews using (film_id)
WHERE title IS NULL
;
이 강의에서는 한 테이블에서 다른 테이블에 해당하는 행이 있거나 없을 수 있는 행을 선택하는
PostgreSQL RIGHT JOIN 절을 사용하는 방법에 대해 배웠습니다.
감사합니다.
본 강의는 PostgreSQL Tutorial을 참조합니다.
PostgreSQL Tutorial - Learn PostgreSQL from Scratch
Welcome to the PostgreSQLTutorial.com website! This PostgreSQL tutorial helps you understand PostgreSQL quickly. You’ll master PostgreSQL very fast through many practical examples and apply the knowledge in developing applications using PostgreSQL. If yo
www.postgresqltutorial.com
실습용 테이블에 대해서는 3강을 참조하세요.
3강 SQL이 뭐지? 도구들을 설치해보자. ( PostgreSQL, HeidiSQL )
지난 시간까지 SQL이 뭔지 대충 감을 잡는 시간을 가졌습니다. 이번 시간에는 본격적인 SQL을 공부하기 위해서 도구들을 설치해 보겠습니다. 1. PostgreSQL 설치 ( Windows10 64bit 기준) 2. HeidiSQL 설치 3.
Do it! SQL을 찾아 주셔서 감사합니다. 여러분의 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
19강 SQL이 뭐지? PostgreSQL FULL OUTER JOIN (3) | 2022.12.19 |
---|---|
18강 SQL이 뭐지? PostgreSQL Self-Join (1) | 2022.12.18 |
16강 SQL이 뭐지? PostgreSQL LEFT JOIN (3) | 2022.12.17 |
15강 SQL이 뭐지? PostgreSQL INNER Join (2) | 2022.12.17 |
14강 SQL이 뭐지? PostgreSQL Join (4) | 2022.12.16 |
댓글