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

MySQL UPDATE 문에서 IF() 함수를 활용한 조건부 레코드 업데이트 방법

MySQL에서 UPDATE 문을 실행할 때 IF() 함수를 함께 사용하면, 특정 조건을 만족하는지에 따라 서로 다른 값을 한 번의 쿼리로 설정할 수 있습니다. 예를 들어 학생의 점수가 기준 이상이면 'PASS', 그렇지 않으면 'FAIL'을 자동으로 입력하는 식입니다.

이 글에서는 실제 예제 테이블을 만들고, IF() 함수를 활용해 조건에 따라 Status 컬럼 값을 갱신하는 과정을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성하기

먼저 아래와 같이 테이블을 생성합니다.

mysql> create table DemoTable
    -> (
    -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName varchar(20),
    -> StudentMarks int,
    -> Status varchar(20)
    -> );
Query OK, 0 rows affected (0.97 sec)

StudentId는 자동 증가(AUTO_INCREMENT) 기본키로 설정했으며, 학생 이름과 점수, 합격 여부를 저장할 Status 컬럼을 포함했습니다.

2. 샘플 데이터 삽입하기

INSERT 문을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable(StudentName,StudentMarks) values('Chris',79);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(StudentName,StudentMarks) values('David',59);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentName,StudentMarks) values('Bob',60);
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(StudentName,StudentMarks) values('Mike',45);
Query OK, 1 row affected (0.16 sec)

3. 현재 저장된 레코드 확인하기

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

mysql> select *from DemoTable;

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

+-----------+-------------+--------------+--------+
| StudentId | StudentName | StudentMarks | Status |
+-----------+-------------+--------------+--------+
|         1 | Chris       |           79 | NULL   |
|         2 | David       |           59 | NULL   |
|         3 | Bob         |           60 | NULL   |
|         4 | Mike        |           45 | NULL   |
+-----------+-------------+--------------+--------+
4 rows in set (0.00 sec)

Status 컬럼에는 아직 어떤 값도 입력되지 않아 모두 NULL로 표시됩니다.

4. IF() 함수로 조건부 UPDATE 실행하기

이제 IF() 함수를 사용해 조건에 따라 Status 값을 갱신하는 쿼리를 실행합니다.

mysql> update DemoTable
    -> set Status=if(StudentMarks > 60 ,'PASS','FAIL');
Query OK, 4 rows affected (0.40 sec)
Rows matched: 4 Changed: 4 Warnings: 0

이 쿼리의 동작 방식은 다음과 같습니다.

  • StudentMarks > 60 조건이 참이면 → 'PASS'가 입력됩니다.
  • 조건이 거짓이면 → 'FAIL'이 입력됩니다.

즉, 점수가 60보다 큰 경우에만 합격(PASS)으로 처리되며, 정확히 60점인 경우는 불합격(FAIL)이 됩니다.

5. 업데이트 결과 확인하기

다시 SELECT 문으로 테이블을 조회해 결과를 확인합니다.

mysql> select *from DemoTable;

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

+-----------+-------------+--------------+--------+
| StudentId | StudentName | StudentMarks | Status |
+-----------+-------------+--------------+--------+
|         1 | Chris       |           79 | PASS   |
|         2 | David       |           59 | FAIL   |
|         3 | Bob         |           60 | FAIL   |
|         4 | Mike        |           45 | FAIL   |
+-----------+-------------+--------------+--------+
4 rows in set (0.00 sec)

결과를 보면 79점인 Chris만 'PASS'로 갱신되었고, 나머지 학생들은 모두 'FAIL'로 처리된 것을 확인할 수 있습니다.

정리

MySQL의 UPDATE 문에서 IF(조건, 참일 때 값, 거짓일 때 값) 형태로 함수를 사용하면, 별도의 프로그래밍 로직 없이 단일 쿼리만으로 조건부 데이터 갱신이 가능합니다. CASE WHEN 구문과 유사한 역할을 하지만 더 간결하게 작성할 수 있어, 간단한 조건 분기 처리에 매우 유용합니다.