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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 여러 행을 한 번에 INSERT
- UPSERT: ON CONFLICT DO UPDATE(PostgreSQL)
- FROM과 JOIN 방식의 UPDATE
- USING을 사용한 DELETE와 안전한 패턴