본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

36강 SQL이 뭐지? PostgreSQL UPDATE Join

by DoitSQL 2022. 12. 21.
728x90

36강 SQL이 뭐지? PostgreSQL UPDATE Join   

PostgreSQL

SQL이 뭐지? 36강 시작합니다.

 

이번 강의에서는

 PostgreSQL UPDATE Join statement

에 대해서 알아보겠습니다.

 

PostgreSQL UPDATE 조인 구문은 다른 테이블의 값을 기준으로 테이블의 데이터를 업데이트합니다.


Introduction to the PostgreSQL UPDATE join syntax   

다른 테이블의 값을 기준으로 테이블의 데이터를 업데이트해야 하는 경우도 있습니다. 이 경우 PostgreSQL UPDATE 조인을 사용할 수 있습니다. 구문은 다음과 같습니다.

UPDATE t1
SET t1.c1 = new_value
FROM t2
WHERE t1.c2 = t2.c2;   

 

UPDATE 문에서 다른 테이블에 조인하려면 FROM 절에 조인된 테이블을 지정하고 WHERE 절에 조인 조건을 제공합니다. FROM 절은 SET 절 바로 뒤에 나타나야 합니다.

UPDATE 문은 테이블 t1의 각 행에 대해 테이블 t2의 모든 행을 검사합니다. 테이블 t1의 c2 열의 값이 테이블 t2의 c2 열의 값과 같으면 UPDATE 문은 테이블 t1의 c1 열의 값을 새 값(new_value)으로 업데이트합니다.


PostgreSQL UPDATE JOIN example   

PostgreSQL UPDATE 조인 실습에는 다음 데이터베이스 테이블을 사용합니다.

먼저 grand luxury, luxury, mass를 포함한 제품 세그먼트를 저장하는 product_segment라는 새 테이블을 만듭니다.

product_segment 테이블에는 특정 세그먼트를 기준으로 할인율을 저장하는 할인 열이 있습니다. 예를 들어, 그랜드 럭셔리 세그먼트가 있는 제품은 5% 할인이 적용되는 반면, 럭셔리와 대량 제품은 각각 6%와 10% 할인이 적용된다.

CREATE TABLE product_segment (
    id SERIAL PRIMARY KEY,
    segment VARCHAR NOT NULL,
    discount NUMERIC (4, 2)
);


INSERT INTO 
    product_segment (segment, discount)
VALUES
    ('Grand Luxury', 0.05),
    ('Luxury', 0.06),
    ('Mass', 0.1);   

 

둘째, 제품 데이터를 저장하는 product라는 다른 테이블을 생성합니다. 제품 테이블에는 세그먼트 테이블의 ID로 연결되는 외부 키 열 segment_id가 있습니다.

CREATE TABLE product(
    id SERIAL PRIMARY KEY,
    name VARCHAR NOT NULL,
    price NUMERIC(10,2),
    net_price NUMERIC(10,2),
    segment_id INT NOT NULL,
    FOREIGN KEY(segment_id) REFERENCES product_segment(id)
);


INSERT INTO 
    product (name, price, segment_id) 
VALUES 
    ('diam', 804.89, 1),
    ('vestibulum aliquet', 228.55, 3),
    ('lacinia erat', 366.45, 2),
    ('scelerisque quam turpis', 145.33, 3),
    ('justo lacinia', 551.77, 2),
    ('ultrices mattis odio', 261.58, 3),
    ('hendrerit', 519.62, 2),
    ('in hac habitasse', 843.31, 1),
    ('orci eget orci', 254.18, 3),
    ('pellentesque', 427.78, 2),
    ('sit amet nunc', 936.29, 1),
    ('sed vestibulum', 910.34, 1),
    ('turpis eget', 208.33, 3),
    ('cursus vestibulum', 985.45, 1),
    ('orci nullam', 841.26, 1),
    ('est quam pharetra', 896.38, 1),
    ('posuere', 575.74, 2),
    ('ligula', 530.64, 2),
    ('convallis', 892.43, 1),
    ('nulla elit ac', 161.71, 3);   

 

셋째, 제품 세그먼트의 할인을 기준으로 모든 제품의 순 가격을 계산해야 한다고 가정합니다. 이렇게 하려면 다음과 같이 UPDATE join 문을 적용할 수 있습니다.

UPDATE product
SET net_price = price - price * discount
FROM product_segment
WHERE product.segment_id = product_segment.id;   

 

테이블 별칭을 사용하여 다음과 같이 쿼리를 더 짧게 만들 수 있습니다.

UPDATE 
    product p
SET 
    net_price = price - price * discount
FROM 
    product_segment s
WHERE 
    p.segment_id = s.id;   

 

이 문은 product_segment 테이블에 product 테이블을 결합합니다. 두 테이블 모두 일치하는 경우 product_segment 테이블에서 할인을 받아 다음 공식을 기반으로 순 가격을 계산하고 net_price 열을 업데이트합니다.

net_price = price - price * discount;   

 

다음 SELECT 문은 업데이트를 확인하기 위해 제품 테이블의 데이터를 검색합니다.

SELECT * FROM product;   

보시다시피 net_price 열이 올바른 값으로 업데이트되었습니다.


다른 테이블의 값을 기준으로 테이블의 데이터를 업데이트하는

PostgreSQL UPDATE 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 기준


Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글