Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

SQL UPDATE 명령문 완벽 가이드: 용도부터 실전 예제까지

SQL UPDATE 명령문이란?

UPDATE 명령은 테이블에 저장된 레코드(행)를 수정하는 데 사용되는 데이터 조작어(DML, Data Manipulation Language)입니다. 이 명령을 활용하면 조건에 맞는 단일 행만 수정할 수도 있고, 사용자가 지정한 조건에 따라 여러 행 또는 테이블의 전체 행을 한 번에 변경할 수도 있습니다.

UPDATE 명령은 항상 SET 절과 함께 사용되며, 변경 대상을 지정하기 위해 WHERE 절을 선택적으로 추가할 수 있습니다. 기본 문법은 다음과 같습니다.

UPDATE 테이블명
SET 컬럼명1 = 값1, 컬럼명2 = 값2, ...
[WHERE 조건];

WHERE 절을 생략하면 테이블의 모든 행이 수정되므로 주의해서 사용해야 합니다.

예제 1: 조건에 맞는 단일 행 수정

다음은 학생(student) 테이블에서 전공(branch)이 'CSE'인 학생의 이름을 'sneha'로 변경하는 기본적인 예시입니다.

UPDATE student SET name = 'sneha' WHERE branch = 'CSE';

예제 2: 테이블 생성부터 수정까지 전체 과정

아래 예제는 직원(employee) 테이블을 만들고 데이터를 삽입한 뒤, 부서(department)가 'CSE'인 직원의 이름을 수정하는 전체 과정을 보여줍니다.

CREATE TABLE employee(ename VARCHAR(30), department VARCHAR(20));
INSERT INTO employee VALUES('pinky', 'CSE');
INSERT INTO employee VALUES('priya', 'ECE');
INSERT INTO employee VALUES('hari', 'EEE');
SELECT * FROM employee;

UPDATE employee SET ename = 'sneha' WHERE department = 'CSE';

SELECT * FROM employee;

실행 결과

pinky|CSE
priya|ECE
hari|EEE
sneha|CSE
priya|ECE
hari|EEE

실행 결과를 보면 'CSE' 부서였던 pinky가 sneha로 변경된 것을 확인할 수 있습니다.

컬럼 값 일괄 수정하기

WHERE 절 없이 UPDATE 문을 실행하면 테이블의 모든 행이 수정됩니다. 아래 예제는 모든 직원의 나이(age)를 2살씩 증가시키는 경우입니다.

CREATE TABLE employee(ename VARCHAR(30), department VARCHAR(20), age NUMBER(30));
INSERT INTO employee VALUES('ram', 'projectmanager', 40);
INSERT INTO employee VALUES('priya', 'assistant director', 45);
INSERT INTO employee VALUES('hari', 'developer', 46);
SELECT * FROM employee;

UPDATE employee SET age = age + 2;

SELECT * FROM employee;

실행 결과

ram|projectmanager|40
priya|assistant director|45
hari|developer|46
ram|projectmanager|42
priya|assistant director|47
hari|developer|48

모든 직원의 나이가 각각 2씩 증가한 것을 볼 수 있습니다.

하나의 문장으로 여러 컬럼 수정하기

UPDATE 문 하나로 여러 컬럼의 값을 동시에 수정할 수도 있습니다. 이때 각 컬럼의 할당식을 쉼표(,)로 구분하면 됩니다. 예를 들어 다음과 같이 두 가지 작업을 동시에 처리할 수 있습니다.

  • age = age + 2 (나이 2 증가)
  • salary = salary + 5000 (급여 5,000 인상)

예제

CREATE TABLE employee(ename VARCHAR(30), department VARCHAR(20), age NUMBER(30), salary NUMBER(20));
INSERT INTO employee VALUES('ram', 'projectmanager', 40, 50000);
INSERT INTO employee VALUES('priya', 'assistant director', 45, 45000);
INSERT INTO employee VALUES('hari', 'developer', 46, 30000);
SELECT * FROM employee;

UPDATE employee SET age = age + 2,
    salary = salary + 5000;

SELECT * FROM employee;

실행 결과

ram  |projectmanager    |40|50000
priya|assistant director|45|45000
hari |developer |46|30000
ram |projectmanager |42|55000
priya|assistant director|47|50000
hari |developer |48|35000

정리

SQL의 UPDATE 명령은 테이블 데이터를 유연하게 수정할 수 있는 필수적인 DML 명령입니다. 핵심 포인트를 정리하면 다음과 같습니다.

  • SET 절: 변경할 컬럼과 새로운 값을 지정합니다.
  • WHERE 절: 수정 대상 행을 제한하며, 생략 시 모든 행이 수정됩니다.
  • 다중 컬럼 수정: 쉼표로 구분하여 하나의 문장에서 여러 컬럼을 동시에 변경할 수 있습니다.

특히 운영 환경에서는 WHERE 절 누락으로 인한 대량 데이터 변경 사고를 방지하기 위해, UPDATE 실행 전 SELECT 문으로 대상 행을 먼저 확인하는 습관을 들이는 것이 좋습니다.