MySQL에서는 IS NULL 조건을 사용해 NULL 값을 손쉽게 찾을 수 있으며, UPDATE 문과 SET 절을 함께 사용하면 해당 NULL 값을 원하는 새로운 값으로 변경할 수 있습니다.
NULL 값을 다른 값으로 업데이트하는 기본 문법
update yourTableName set yourColumnName=yourValue where yourColumnName IS NULL;
위 쿼리는 지정한 테이블에서 특정 컬럼의 값이 NULL인 행만 골라내어, 새로운 값으로 일괄 변경합니다. 실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성하기
먼저 실습에 사용할 테이블을 생성합니다.
mysql> create table DemoTable768 ( Clientid int NOT NULL AUTO_INCREMENT PRIMARY KEY, ClientName varchar(100), ClientAge int ); Query OK, 0 rows affected (0.47 sec)
2단계: 데이터 삽입하기
insert 명령을 사용해 몇 개의 레코드를 추가합니다. 이때 의도적으로 ClientName이 NULL인 레코드를 포함시킵니다.
mysql> insert into DemoTable768(ClientName,ClientAge) values('John',23);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable768(ClientName,ClientAge) values(NULL,26);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable768(ClientName,ClientAge) values('Carol',28);
Query OK, 1 row affected (0.53 sec)
mysql> insert into DemoTable768(ClientName,ClientAge) values(NULL,24);
Query OK, 1 row affected (0.16 sec)3단계: 현재 데이터 확인하기
select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable768;
실행 결과는 다음과 같습니다.
+----------+------------+-----------+ | Clientid | ClientName | ClientAge | +----------+------------+-----------+ | 1 | John | 23 | | 2 | NULL | 26 | | 3 | Carol | 28 | | 4 | NULL | 24 | +----------+------------+-----------+ 4 rows in set (0.00 sec)
출력 결과를 보면 Clientid가 2번과 4번인 레코드의 ClientName 컬럼이 NULL로 저장되어 있는 것을 확인할 수 있습니다.
4단계: NULL 값을 새 값으로 업데이트하기
다음은 NULL로 저장된 값들을 'Chris'로 변경하는 쿼리입니다.
mysql> update DemoTable768 set ClientName='Chris' where ClientName IS NULL; Query OK, 2 rows affected (0.41 sec) Rows matched: 2 Changed: 2 Warnings: 0
쿼리 실행 결과, 2개의 행이 매칭되었고 2개의 행이 성공적으로 변경되었습니다.
5단계: 업데이트 결과 확인하기
변경된 내용이 제대로 반영되었는지 다시 한번 전체 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable768;
실행 결과는 다음과 같습니다.
+----------+------------+-----------+ | Clientid | ClientName | ClientAge | +----------+------------+-----------+ | 1 | John | 23 | | 2 | Chris | 26 | | 3 | Carol | 28 | | 4 | Chris | 24 | +----------+------------+-----------+ 4 rows in set (0.00 sec)
정리
이처럼 WHERE 컬럼명 IS NULL 조건과 UPDATE ... SET 구문을 조합하면, 테이블에 존재하는 모든 NULL 값을 원하는 값으로 한 번에 치환할 수 있습니다. 참고로 NULL 비교 시에는 = NULL이 아닌 반드시 IS NULL을 사용해야 한다는 점을 기억하세요. SQL에서 NULL은 값 자체가 아니라 '알 수 없는 상태'를 의미하기 때문에 등호(=) 연산자로는 비교할 수 없습니다.