0Pricing
SQL Academy · 강의

FROM과 JOIN 방식의 UPDATE

UPDATE ... FROM(PostgreSQL)과 표준 MERGE 문을 사용해 다른 테이블의 값으로 행을 업데이트합니다.

FROM과 JOIN 방식의 UPDATE은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

기본 UPDATE

조건에 맞는 행의 값을 변경합니다:

UPDATE users SET full_name = 'Alice Adams' WHERE id = 1;

여러 열

쉼표로 구분된 SET 목록입니다:

UPDATE users
SET full_name = 'Alice', last_login = NOW(), visits = visits + 1
WHERE id = 1;

여러 행 UPDATE하기

WHERE로 더 많은 행을 조건에 맞게 선택하면 됩니다:

UPDATE orders SET status = 'archived'
WHERE created_at < NOW() - INTERVAL '5 years';

서브쿼리를 사용하는 UPDATE

다른 쿼리에서 새 값을 계산합니다:

UPDATE products
SET review_count = (
  SELECT COUNT(*) FROM reviews WHERE reviews.product_id = products.id
);

UPDATE … FROM (PostgreSQL)

JOIN 방식의 UPDATE로, 다른 테이블에서 값을 가져옵니다:

UPDATE products p
SET stock = i.qty
FROM inventory i
WHERE i.product_id = p.id;

여러 테이블을 사용하는 UPDATE … FROM

FROM 목록에는 여러 테이블을 포함할 수 있습니다:

UPDATE invoices inv
SET tax_rate = r.rate
FROM users u
JOIN rates r ON r.country = u.country
WHERE inv.user_id = u.id;

표준 SQL: 상관 서브쿼리를 통한 UPDATE … FROM

이식 가능한 동등 구문이지만 더 느립니다:

UPDATE products p
SET stock = (SELECT qty FROM inventory i WHERE i.product_id = p.id);

INSERT/UPDATE/DELETE를 위한 MERGE

PostgreSQL 15 이상에서는 결합된 작업에 MERGE를 지원합니다. UPSERT 레슨을 참고하십시오.

UPDATE에서 RETURNING 사용

한 번의 왕복으로 UPDATE된 행을 반환합니다:

UPDATE orders SET status = 'shipped', shipped_at = NOW()
WHERE id = $1
RETURNING id, status, shipped_at;

CASE를 사용하는 UPDATE

조건에 따른 새 값입니다:

UPDATE orders
SET status = CASE
  WHEN paid_at IS NOT NULL THEN 'paid'
  WHEN created_at < NOW() - INTERVAL '24h' THEN 'expired'
  ELSE status
END;

WHERE 누락에 주의하십시오

UPDATE users SET active = false;는 EVERY 행을 UPDATE합니다. 운영 환경에서는 다음과 같이 하십시오:

  • 먼저 SELECT를 실행하여 행 수를 확인합니다
  • 트랜잭션으로 감싼 뒤 COMMIT 전에 확인합니다
  • 시험 실행으로 BEGIN; ...; SELECT count(*) FROM users WHERE active = false; ROLLBACK;을 사용합니다

UPDATE 성능

UPDATE는 새 행 버전을 만들고 기존 버전을 삭제된 것으로 표시합니다(MVCC). 자주 UPDATE되는 테이블은 비대해질 수 있으며, 이는 VACUUM/MVCC 레슨에서 다룹니다.

요약

UPDATE … FROM은 대량 수정을 깔끔하게 처리하는 JOIN 방식의 UPDATE입니다.

  • 항상 WHERE를 사용하십시오
  • RETURNING으로 확인하십시오
  • ROLLBACK을 사용하는 트랜잭션에서 테스트하십시오

빠른 확인

PostgreSQL에서 다른 테이블을 참조할 수 있게 해 주는 UPDATE 구문은 무엇입니까?

자주 묻는 질문

“FROM과 JOIN 방식의 UPDATE” 강의는 무료인가요?

네 — “FROM과 JOIN 방식의 UPDATE” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“FROM과 JOIN 방식의 UPDATE”에서 뭘 배우나요?

UPDATE ... FROM(PostgreSQL)과 표준 MERGE 문을 사용해 다른 테이블의 값으로 행을 업데이트합니다. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

SQL Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“FROM과 JOIN 방식의 UPDATE” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 여러 행을 한 번에 INSERT
  2. UPSERT: ON CONFLICT DO UPDATE(PostgreSQL)
  3. FROM과 JOIN 방식의 UPDATE
  4. USING을 사용한 DELETE와 안전한 패턴
← SQL Academy(으)로 돌아가기