MySQL에서는 IS NULL 연산자와 UPDATE 문을 조합하면, 특정 컬럼이 NULL인 행을 손쉽게 찾아 원하는 값으로 일괄 업데이트할 수 있습니다. 이번 글에서는 예제 테이블을 만들고, NULL이 포함된 필드를 조건에 맞게 업데이트하는 전체 과정을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 DemoTable이라는 이름의 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Id int,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.58 sec)2. 샘플 데이터 삽입
INSERT 명령을 사용해 NULL 값을 포함한 레코드를 몇 개 추가합니다.
mysql> insert into DemoTable values(10,NULL); Query OK, 1 row affected (0.32 sec) mysql> insert into DemoTable values(NULL,'David'); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values(NULL,NULL); Query OK, 1 row affected (0.15 sec)
3. 현재 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable;
실행 결과는 다음과 같습니다.
+------+-------+ | Id | Name | +------+-------+ | 10 | NULL | | NULL | David | | NULL | NULL | +------+-------+ 3 rows in set (0.00 sec)
위 결과를 보면 Id 또는 Name 컬럼에 NULL 값이 포함된 행들이 존재합니다.
4. UPDATE 쿼리로 NULL 필드 일괄 업데이트
이제 WHERE 절에서 IS NULL 조건을 사용하여, Id 또는 Name 중 하나라도 NULL인 모든 행의 Name 값을 'Robert'로 변경하는 쿼리를 실행합니다.
mysql> update DemoTable set Name='Robert' where Id IS NULL or Name IS NULL; Query OK, 3 rows affected (0.22 sec) Rows matched: 3 Changed: 3 Warnings: 0
쿼리 실행 결과, 조건에 해당하는 3개의 행이 모두 성공적으로 변경되었습니다.
5. 업데이트 후 결과 확인
변경된 내용을 확인하기 위해 다시 한 번 테이블을 조회합니다.
mysql> select * from DemoTable;
실행 결과는 다음과 같습니다.
+------+--------+ | Id | Name | +------+--------+ | 10 | Robert | | NULL | Robert | | NULL | Robert | +------+--------+ 3 rows in set (0.00 sec)
정리
MySQL에서 NULL 값을 가진 레코드를 찾아 업데이트할 때는 반드시 IS NULL 또는 IS NOT NULL 연산자를 사용해야 합니다. 일반적인 비교 연산자(=, !=)로는 NULL을 비교할 수 없기 때문입니다. 위 예제처럼 WHERE 절에 여러 IS NULL 조건을 OR로 연결하면, 원하는 컬럼 중 하나라도 NULL인 행을 한 번의 쿼리로 일괄 처리할 수 있습니다.