Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL Server

SQL Server UPDATE 문 완벽 가이드: 기본 문법부터 실전 예제까지

SQL Server UPDATE 문이란?

SQL Server(Transact-SQL)에서 UPDATE 문은 데이터베이스 테이블에 이미 저장된 레코드를 수정할 때 사용하는 DML(Data Manipulation Language) 명령입니다. UPDATE 문은 크게 세 가지 형태로 작성할 수 있습니다. 하나는 일반적인 방식으로 단일 테이블을 갱신하는 것이고, 나머지 두 가지는 다른 테이블의 데이터를 가져와 테이블을 갱신하는 방식입니다.

UPDATE 문 기본 문법

1. 단일 테이블 업데이트

UPDATE 테이블명
SET 열1 = 표현식1,
    열2 = 표현식2,
    ...
[WHERE 조건];

2. 서브쿼리(SELECT)를 이용한 업데이트

다른 테이블의 값을 가져와 갱신할 때는 SELECT 문과 함께 사용합니다.

UPDATE 테이블1
SET 열1 = (
    SELECT 표현식1
    FROM 테이블2
    WHERE 조건)
[WHERE 조건];

3. INNER JOIN을 이용한 업데이트

두 테이블을 조인하여 특정 열의 값을 다른 테이블의 값으로 교체할 수도 있습니다.

UPDATE 테이블1
SET 테이블1.열 = 테이블2.표현식1
FROM 테이블1
INNER JOIN 테이블2
ON (테이블1.열1 = 테이블2.열1)
[WHERE 조건];

주요 매개변수 설명

  • 열1, 열2: 값을 변경하려는 컬럼(열)의 이름입니다.
  • 표현식1, 표현식2: 해당 열에 지정할 새로운 값입니다. 열1에는 표현식1의 값이, 열2에는 표현식2의 값이 할당됩니다.
  • WHERE 조건: 선택 사항입니다. 여기에 명시한 조건을 만족하는 레코드만 업데이트됩니다.

주의: WHERE 절을 생략하면 테이블의 모든 행이 한꺼번에 변경됩니다. 실무에서는 반드시 WHERE 조건을 확인한 후 UPDATE를 실행해야 합니다.

UPDATE 문 활용 예제

예제 1. 한 개의 열 업데이트

UPDATE employees
SET last_name = 'Johnson'
WHERE employee_id = 10;

위 쿼리는 직원 번호(employee_id)가 10인 직원의 성(last_name)을 'Johnson'으로 변경합니다.

예제 2. 여러 개의 열 업데이트

여러 열을 동시에 수정하려면 각 "열 = 값" 쌍을 쉼표(,)로 구분하기만 하면 됩니다.

UPDATE employees
SET first_name = 'Kyle',
    employee_id = 14
WHERE last_name = 'Johnson';

이 UPDATE 문은 성(last_name)이 'Johnson'인 직원의 이름(first_name)을 'Kyle'로, 직원 번호(employee_id)를 14로 변경합니다.

예제 3. 다른 테이블의 데이터로 업데이트 (서브쿼리)

UPDATE employees
SET first_name = (
    SELECT first_name
    FROM contacts
    WHERE contacts.last_name = employees.last_name)
WHERE employee_id > 95;

위 예제는 직원 번호가 95보다 큰 모든 레코드를 대상으로, 연락처 테이블(contacts)에 같은 성을 가진 사람이 있으면 그 사람의 이름을 직원 테이블의 이름으로 복사해 갱신합니다.

예제 4. INNER JOIN으로 재작성하기

예제 3과 동일한 결과를 INNER JOIN 문법으로 더 간결하게 작성할 수도 있습니다.

UPDATE employees
SET employees.first_name = contacts.first_name
FROM employees
INNER JOIN contacts
ON (employees.last_name = contacts.last_name)
WHERE employee_id > 95;

마무리

UPDATE 문은 데이터를 수정하는 강력한 도구이지만, 잘못 사용하면 의도하지 않은 대량의 데이터 변경으로 이어질 수 있습니다. 실행 전 반드시 WHERE 조건을 점검하고, 중요한 데이터를 다룰 때는 트랜잭션(BEGIN TRAN → 검증 → COMMIT/ROLLBACK)을 활용해 변경 내용을 안전하게 관리하는 습관을 들이는 것이 좋습니다.