SQL UPDATE 문 사용 방법
데이터베이스의 핵심 기능 중 하나는 저장된 값을 언제든지 수정할 수 있다는 점입니다. 데이터베이스 내 어떤 레코드의 값이라도 필요할 때 변경할 수 있으며, 이때 사용하는 것이 바로 SQL UPDATE 문입니다.
이 글에서는 SQL UPDATE 문이 무엇인지, 그리고 실제로 어떻게 활용할 수 있는지 예제와 함께 차근차근 살펴보겠습니다.
SQL UPDATE란 무엇인가?
UPDATE 문은 SQL 테이블에 이미 존재하는 데이터를 수정하는 데 사용됩니다. 테이블의 모든 레코드를 수정할 수도 있고, 특정 조건을 만족하는 레코드만 골라서 수정할 수도 있습니다.
일반적인 SQL UPDATE 쿼리의 기본 구조는 다음과 같습니다.
UPDATE table
SET column1 = value1, column2 = value2…
WHERE condition(s);
여기서 table은 수정하려는 레코드가 있는 테이블의 이름입니다.
SET 키워드 뒤에는 수정하고 싶은 열 이름, 등호(=), 그리고 해당 열에 지정할 새로운 값을 순서대로 작성합니다. 여러 개의 값을 동시에 수정하려면 SET 뒤의 각 구문을 쉼표(,)로 구분하면 됩니다.
그럼 실제 예제를 통해 UPDATE 문이 어떻게 동작하는지 확인해 보겠습니다. 다음은 employees라는 이름의 테이블입니다.
| id | name | title | hired_date | salary |
| 1 | Thomas Carlton | Sales Associate | 09-08-2019 | 28000 |
| 2 | Lisa Ingles | Sales Associate | 12-09-2019 | 28000 |
| 3 | Victoria Carlisle | Sales Director | 04-02-2017 | 36000 |
이 테이블은 SQL INSERT 문으로 생성한 것이며, 앞으로 몇 개의 레코드를 수정해 보겠습니다.
SQL UPDATE 실전 예제
Lisa Ingles가 최근 결혼하면서 성이 Nelson으로 바뀌었습니다. UPDATE 문을 사용해 employees 테이블에서 그녀의 이름을 변경해 보겠습니다.
UPDATE employees
SET name = 'Lisa Nelson'
WHERE id = 2;
이 명령은 SET 절을 사용해 name이라는 하나의 열만 수정합니다. 변경이 제대로 적용되었는지 해당 레코드를 조회해 확인해 보겠습니다.
| id | name | title | hired_date | salary |
| 2 | Lisa Nelson | Sales Associate | 12-09-2019 | 28000 |
Lisa의 성이 정상적으로 변경된 것을 확인할 수 있습니다.
여러 레코드 한 번에 수정하기
UPDATE 문 하나로 테이블의 여러 레코드를 동시에 수정할 수 있습니다. 이때 의도하지 않은 레코드까지 변경되지 않도록 WHERE 절을 함께 사용하는 것이 일반적입니다.
경영진의 결정으로 모든 'Sales Associate' 직함이 'Sales Representative'로 변경되어야 한다고 가정해 보겠습니다. 이를 위해 다음과 같은 UPDATE 명령을 작성합니다.
UPDATE employees
SET title = 'Sales Representative'
WHERE title = 'Sales Associate';
이 명령은 직함이 'Sales Associate'인 모든 직원의 title 값을 'Sales Representative'로 변경합니다. 결과를 확인해 보겠습니다.
| id | name | title | hired_date | salary |
| 1 | Thomas Carlton | Sales Representative | 09-08-2019 | 28000 |
| 2 | Lisa Nelson | Sales Representative | 12-09-2019 | 28000 |
| 3 | Victoria Carlisle | Sales Director | 04-02-2017 | 36000 |
Thomas Carlton과 Lisa Nelson의 직함이 변경되었고, Victoria Carlisle은 Sales Director이므로 그대로 유지되었습니다.
테이블의 전체 레코드 수정하기
UPDATE 문은 기본적으로 테이블의 모든 레코드를 대상으로 동작합니다. 따라서 일부 레코드만 수정하려면 반드시 WHERE 절을 지정해야 하며, 반대로 전체 레코드를 수정할 때는 WHERE 절을 생략하면 됩니다.
회사의 모든 직원에게 5% 인상된 급여를 지급하기로 했다고 가정해 보겠습니다. 다음과 같은 UPDATE 문을 사용할 수 있습니다.
UPDATE employees
SET salary = salary * 1.05;
이 명령은 데이터베이스의 모든 레코드에서 salary 값을 수정합니다. 곱셈 연산자(*)를 사용해 각 직원의 급여에 1.05를 곱했으며, 이는 5% 인상과 같은 효과를 냅니다. 결과를 확인해 보겠습니다.
| id | name | title | hired_date | salary |
| 1 | Thomas Carlton | Sales Representative | 09-08-2019 | 29400 |
| 2 | Lisa Nelson | Sales Representative | 12-09-2019 | 29400 |
| 3 | Victoria Carlisle | Sales Director | 04-02-2017 | 37800 |
모든 직원의 급여가 성공적으로 인상되었습니다.
마무리
UPDATE 문은 데이터베이스에서 하나 이상의 레코드를 수정하는 데 사용됩니다. 일반적으로 WHERE 절과 함께 사용하여 정확히 어떤 레코드를 수정할지 지정하는 것이 안전합니다.
실력을 더 키우고 싶다면 아래 작업을 수행하는 SQL 명령을 직접 작성해 보세요.
- 모든 Sales Representative의 급여를 2% 인상하기
- Lisa의 직함을 Senior Sales Representative로 변경하기
- Victoria Carlisle의 입사일(hired_date)을 04-03-2017로 변경하기
이제 여러분도 SQL 전문가처럼 UPDATE 문을 자유롭게 활용할 준비가 되었습니다!