MySQL에서는 IF 조건문뿐만 아니라 CASE 문을 사용해서도 데이터를 업데이트할 수 있습니다. 이번 글에서는 IF 조건을 활용한 업데이트 방법을 예제와 함께 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리로 'UpdateWithIfCondition' 테이블을 만들 수 있습니다.
mysql> create table UpdateWithIfCondition
-> (
-> BookId int,
-> BookName varchar(200)
-> );
Query OK, 0 rows affected (0.60 sec)
2. 레코드 삽입하기
테이블 생성이 완료되면 INSERT 명령어로 레코드를 추가합니다.
mysql> insert into UpdateWithIfCondition values(1000,'C in Depth');
Query OK, 1 row affected (0.12 sec)
mysql> insert into UpdateWithIfCondition values(1001,'Introduction to Java');
Query OK, 1 row affected (0.14 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from UpdateWithIfCondition;
실행 결과는 다음과 같습니다.
+--------+----------------------+
| BookId | BookName |
+--------+----------------------+
| 1000 | C in Depth |
| 1001 | Introduction to Java |
+--------+----------------------+
2 rows in set (0.00 sec)
4. IF 조건문으로 데이터 업데이트하기
이제 IF 조건을 사용해 'C in Depth'라는 책 이름은 'Introduction to C'로 변경하고, BookId가 1001인 레코드는 2000으로 수정해 보겠습니다.
mysql> update UpdateWithIfCondition
-> set BookName = if(BookName = 'C in Depth','Introduction to C',BookName),
-> BookId = if(BookId = 1001,2000,BookId);
Query OK, 2 rows affected (0.43 sec)
Rows matched: 2 Changed: 2 Warnings: 0
위 쿼리에서는 각 컬럼 값이 특정 조건과 일치하면 새로운 값으로 변경하고, 일치하지 않으면 기존 값을 그대로 유지하도록 IF 함수를 활용했습니다.
5. 업데이트 결과 확인하기
두 컬럼의 값이 정상적으로 변경되었는지 SELECT 문으로 확인해 보겠습니다.
mysql> select *from UpdateWithIfCondition;
실행 결과를 보면 IF 조건문을 통해 두 값이 성공적으로 업데이트된 것을 확인할 수 있습니다.
+--------+----------------------+
| BookId | BookName |
+--------+----------------------+
| 1000 | Introduction to C |
| 2000 | Introduction to Java |
+--------+----------------------+
2 rows in set (0.00 sec)
정리
MySQL의 UPDATE 문에서는 IF(조건, 참일 때 값, 거짓일 때 값) 함수를 활용하여 조건부로 컬럼 값을 변경할 수 있습니다. 이 방식은 여러 컬럼을 한 번의 쿼리로 조건에 따라 다르게 업데이트해야 할 때 특히 유용합니다. 참고로 CASE 문을 사용해도 동일한 결과를 얻을 수 있으므로, 상황에 맞게 선택하여 사용하시면 됩니다.