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

MySQL에서 IF 조건으로 UPDATE 쿼리 작성하는 방법

MySQL IF 조건을 활용한 UPDATE 처리

MySQL에서 IF() 함수를 사용하면 WHERE 절 없이도 조건에 따라 데이터를 업데이트할 수 있습니다. 기본 문법은 다음과 같습니다.

update yourTableName
set yourColumnName = if(yourColumnName = yourOldValue, yourNewValue, yourColumnName);

동작 원리는 간단합니다. IF() 함수는 첫 번째 인자의 조건이 참(TRUE)이면 두 번째 인자 값을 반환하고, 거짓(FALSE)이면 세 번째 인자 값을 반환합니다. 따라서 컬럼 값이 지정한 값과 일치하면 새로운 값으로 변경되고, 일치하지 않으면 기존 값이 그대로 유지됩니다.

1. 예제 테이블 생성

문법을 실습하기 위해 먼저 테이블을 생성해 보겠습니다.

mysql> create table updateIfConditionDemo
    -> (
    -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName varchar(20),
    -> UserAge int
    -> );
Query OK, 0 rows affected (4 min 0.59 sec)

2. 샘플 데이터 삽입

INSERT 명령어로 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into updateIfConditionDemo(UserName,UserAge) values('Larry',23);
Query OK, 1 row affected (0.11 sec)
mysql> insert into updateIfConditionDemo(UserName,UserAge) values('Mike',21);
Query OK, 1 row affected (0.20 sec)
mysql> insert into updateIfConditionDemo(UserName,UserAge) values('Sam',23);
Query OK, 1 row affected (0.15 sec)
mysql> insert into updateIfConditionDemo(UserName,UserAge) values('David',23);
Query OK, 1 row affected (0.14 sec)
mysql> insert into updateIfConditionDemo(UserName,UserAge) values('Maxwell',23);
Query OK, 1 row affected (0.18 sec)

3. 현재 데이터 조회

SELECT 문으로 테이블의 전체 레코드를 확인합니다.

mysql> select *from updateIfConditionDemo;

실행 결과는 다음과 같습니다.

+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
| 1 | Larry | 23 |
| 2 | Mike | 21 |
| 3 | Sam | 23 |
| 4 | David | 23 |
| 5 | Maxwell | 23 |
+--------+----------+---------+
5 rows in set (0.00 sec)

4. IF 조건을 적용한 UPDATE 실행

이제 IF 조건을 사용해 업데이트를 진행합니다. 아래 쿼리는 UserAge가 23인 행만 26으로 변경하고, 나머지 행은 기존 값을 유지합니다.

mysql> update updateIfConditionDemo set UserAge =if(UserAge =23,26,UserAge);
Query OK, 4 rows affected (0.20 sec)
Rows matched: 5 Changed: 4 Warnings: 0

실행 결과를 보면 전체 5개 행 중 4개 행이 변경되었습니다. UserAge가 21인 Mike의 레코드는 조건에 해당하지 않아 그대로 유지된 것입니다.

5. 업데이트 결과 확인

테이블을 다시 조회하면 UserAge가 23에서 26으로 변경된 것을 확인할 수 있습니다.

mysql> select *from updateIfConditionDemo;

실행 결과는 다음과 같습니다.

+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
| 1 | Larry | 26 |
| 2 | Mike | 21 |
| 3 | Sam | 26 |
| 4 | David | 26 |
| 5 | Maxwell | 26 |
+--------+----------+---------+
5 rows in set (0.00 sec)

정리 및 활용 팁

IF() 함수를 활용하면 하나의 UPDATE 문 안에서 조건 분기를 처리할 수 있어 코드가 간결해집니다. 다만 조건이 많아지거나 로직이 복잡해질 경우에는 CASE WHEN 절을 사용하는 것이 가독성 면에서 더 유리합니다. 또한 대용량 테이블을 업데이트할 때는 인덱스와 WHERE 절을 함께 고려해 성능 저하를 방지하는 것이 좋습니다.