UPDATE는 SQL에서 데이터베이스에 이미 저장된 데이터를 수정할 때 사용하는 구문입니다. INSERT가 새로운 데이터를 추가하는 명령이라면 UPDATE는 기존 행에 저장된 값을 변경하는 역할을 합니다. 회원 정보 수정, 상품 가격 변경, 주문 상태 변경 등 데이터베이스에 저장된 정보를 수정해야 하는 다양한 상황에서 사용합니다.

UPDATE의 기본 문법

UPDATE는 수정할 테이블을 지정한 뒤 SET을 사용하여 변경할 컬럼과 값을 지정하는 방식으로 작성합니다.

기본적인 형태는 다음과 같습니다.

UPDATE member
SET age = 31
WHERE id = 101;

위 쿼리는 member 테이블에서 id가 101인 회원의 나이를 31로 변경합니다.

UPDATE에서 SET은 어떤 값을 변경할 것인지 지정하는 역할을 합니다. WHERE는 어떤 행을 수정할 것인지 결정하는 조건입니다.

여러 개의 컬럼을 동시에 변경하는 것도 가능합니다.

UPDATE member
SET age = 31,
    city = '부산'
WHERE id = 101;

이 경우 ID가 101인 회원의 나이와 지역을 동시에 변경합니다.

UPDATE는 기존 데이터를 삭제한 뒤 새로운 데이터를 추가하는 방식이 아니라 해당 행에 저장되어 있는 값을 새로운 값으로 변경합니다. 따라서 데이터의 기본 키나 행 자체가 변경되는 것은 아니며 지정한 컬럼의 값이 수정됩니다.

WHERE가 중요한 이유

UPDATE를 사용할 때 가장 주의해야 하는 부분은 WHERE 조건입니다. WHERE를 생략하면 테이블의 모든 행이 수정될 수 있기 때문입니다.

예를 들어 다음과 같은 쿼리가 있다고 가정하겠습니다.

UPDATE member
SET city = '서울';

WHERE가 없기 때문에 member 테이블에 존재하는 모든 회원의 city 값이 서울로 변경됩니다.

특정 회원 한 명의 데이터만 수정하려는 상황이었다면 심각한 문제가 발생할 수 있습니다. 따라서 UPDATE를 사용할 때는 어떤 데이터를 수정할 것인지 WHERE 조건을 정확하게 작성해야 합니다.

예를 들어 특정 회원의 지역만 변경하려면 다음과 같이 작성합니다.

UPDATE member
SET city = '서울'
WHERE id = 101;

WHERE 조건을 기본 키와 같이 중복되지 않는 컬럼으로 지정하면 특정 행을 정확하게 선택하기 쉽습니다.

조건을 여러 개 사용하는 것도 가능합니다.

UPDATE member
SET city = '서울'
WHERE age >= 30
  AND city = '부산';

이 쿼리는 나이가 30세 이상이고 현재 지역이 부산인 회원의 지역을 서울로 변경합니다.

따라서 UPDATE를 실행하기 전에는 동일한 WHERE 조건을 SELECT에 먼저 적용하여 실제로 어떤 데이터가 선택되는지 확인하는 방법이 안전합니다.

SELECT *
FROM member
WHERE id = 101;

수정하려는 데이터가 맞는지 확인한 후 UPDATE를 실행하는 방식입니다.

조건에 따라 여러 데이터를 수정하기

UPDATE는 반드시 하나의 행만 수정하는 명령은 아닙니다. WHERE 조건에 여러 행이 해당한다면 조건을 만족하는 모든 행이 수정됩니다.

예를 들어 특정 지역의 회원 나이를 일괄적으로 변경해야 한다면 다음과 같이 작성할 수 있습니다.

UPDATE member
SET city = '서울'
WHERE city = '부산';

이 경우 부산에 거주하는 모든 회원의 지역이 서울로 변경됩니다.

또한 숫자 컬럼은 기존 값을 기준으로 계산하여 수정할 수도 있습니다.

UPDATE product
SET price = price * 1.1
WHERE category = 'computer';

위 쿼리는 computer 카테고리에 해당하는 상품의 가격을 기존 가격의 110%로 변경합니다. 이처럼 UPDATE의 SET에는 단순한 값을 입력하는 것뿐만 아니라 기존 컬럼 값을 이용한 계산식도 사용할 수 있습니다.

UPDATE를 사용할 때는 데이터의 제약 조건도 고려해야 합니다. NOT NULL, UNIQUE, 외래 키 등의 제약 조건을 위반하는 값으로 변경하려고 하면 데이터베이스에서 수정 작업이 정상적으로 처리되지 않을 수 있습니다.

특히 다른 테이블과 연결된 외래 키 값을 변경하는 경우에는 참조 관계가 깨지지 않는지 확인해야 합니다.

UPDATE는 실제 서비스에서도 매우 빈번하게 사용됩니다. 회원이 자신의 이름이나 주소를 변경하거나 관리자가 상품 가격을 수정하는 경우, 주문 상태가 결제 완료에서 배송 중으로 변경되는 경우에도 UPDATE가 사용될 수 있습니다.

다만 UPDATE는 기존 데이터를 직접 변경하는 명령이기 때문에 실행 전에 수정 대상과 변경할 값을 확인하는 과정이 중요합니다. 특히 대량의 데이터를 수정하는 경우에는 WHERE 조건이 정확한지 확인하지 않으면 예상보다 많은 데이터가 변경될 수 있습니다.

필요한 경우 데이터베이스의 트랜잭션 기능을 이용하여 변경 작업을 임시로 처리한 뒤 결과를 확인하고 최종적으로 반영하는 방식도 사용할 수 있습니다. 이후에 배우게 될 COMMIT과 ROLLBACK은 이러한 데이터 변경 작업을 안전하게 관리하는 데 사용됩니다.

결국 UPDATE는 데이터베이스에 이미 저장된 데이터를 수정하기 위한 SQL 구문입니다. SET을 이용하여 변경할 값을 지정하고 WHERE를 이용하여 수정할 대상을 선택합니다. 특히 WHERE를 생략하면 전체 데이터가 수정될 수 있으므로 UPDATE를 사용할 때는 조건을 정확하게 작성하는 것이 중요합니다. 다음 단계에서는 데이터베이스에서 기존 데이터를 삭제하는 DELETE에 대해 알아보겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

글쓴이

rjsan46@koreabites.com

관련 게시물

복합 인덱스란 무엇인가

복합 인덱스는 데이터베이스에서 두 개 이상의 컬럼을 하나의 인덱스로 묶어 사용하는 방식입니다. 하나의 컬럼만 검색하는 단일 인덱스와 달리 여러 컬럼을 함께 조건으로...

모두 읽어보기

인덱스가 빠른 이유

인덱스가 빠른 이유는 데이터베이스가 검색할 때 테이블의 모든 데이터를 처음부터 끝까지 확인하지 않고, 별도로 구성된 검색 구조를 이용하여 필요한 데이터의 위치를 빠르게...

모두 읽어보기

인덱스란 무엇인가

인덱스는 데이터베이스에서 원하는 데이터를 빠르게 찾기 위해 사용하는 자료 구조입니다. 데이터가 많아질수록 모든 데이터를 하나씩 확인하는 방식은 검색 시간이 증가하기 때문에 인덱스를...

모두 읽어보기

서브쿼리란 무엇인가

서브쿼리는 SQL 문 안에 다른 SQL 문을 포함하여 사용하는 쿼리입니다. 하나의 SQL 문에서 필요한 데이터를 먼저 조회한 다음 그 결과를 바깥쪽 쿼리에서...

모두 읽어보기

INNER JOIN과 OUTER JOIN 차이

INNER JOIN과 OUTER JOIN은 서로 다른 테이블의 데이터를 연결할 때 어떤 데이터를 조회 결과에 포함할 것인지 결정하는 JOIN 방식입니다. INNER JOIN은 두...

모두 읽어보기

JOIN이란 무엇인가

JOIN은 SQL에서 서로 다른 테이블에 저장된 데이터를 연결하여 하나의 조회 결과로 가져올 때 사용하는 구문입니다. 관계형 데이터베이스에서는 하나의 테이블에 모든 데이터를 저장하기보다...

모두 읽어보기