특정 테이블의 특정 필드(컬럼)에 저장된 모든 NULL 값을 다른 값으로 일괄 변경하려면 UPDATE 문과 IS NULL 조건을 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.
UPDATE yourTableName SET yourColumnName='yourValue' WHERE yourColumnName IS NULL;
예제 테이블 생성
문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table Employee_Information_Table
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(20),
-> Salary int,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.59 sec)샘플 데이터 삽입
INSERT 문을 사용해 직원 정보를 여러 건 입력합니다. 이때 Salary 값은 의도적으로 NULL로 넣었습니다.
mysql> insert into Employee_Information_Table(Name,Salary) values('John',NULL);
Query OK, 1 row affected (0.13 sec)
mysql> insert into Employee_Information_Table(Name,Salary) values('Carol',NULL);
Query OK, 1 row affected (0.17 sec)
mysql> insert into Employee_Information_Table(Name,Salary) values('Bob',NULL);
Query OK, 1 row affected (0.10 sec)
mysql> insert into Employee_Information_Table(Name,Salary) values('David',NULL);
Query OK, 1 row affected (0.17 sec)
mysql> insert into Employee_Information_Table(Name,Salary) values('Robert',NULL);
Query OK, 1 row affected (0.12 sec)
mysql> insert into Employee_Information_Table(Name,Salary) values('Mike',NULL);
Query OK, 1 row affected (0.24 sec)
mysql> insert into Employee_Information_Table(Name,Salary) values('Sam',NULL);
Query OK, 1 row affected (0.17 sec)현재 데이터 확인
SELECT 문으로 테이블의 전체 레코드를 조회해 보면 Salary 필드가 모두 NULL로 되어 있는 것을 확인할 수 있습니다.
mysql> select *from Employee_Information_Table;
실행 결과는 다음과 같습니다.
+----+--------+--------+ | Id | Name | Salary | +----+--------+--------+ | 1 | John | NULL | | 2 | Carol | NULL | | 3 | Bob | NULL | | 4 | David | NULL | | 5 | Robert | NULL | | 6 | Mike | NULL | | 7 | Sam | NULL | +----+--------+--------+ 7 rows in set (0.00 sec)
NULL 값 일괄 대체하기
이제 WHERE 절에 IS NULL 조건을 사용해 Salary 필드의 모든 NULL 값을 45500으로 변경하는 UPDATE 쿼리를 실행합니다.
mysql> update Employee_Information_Table -> set Salary=45500 where Salary IS NULL; Query OK, 7 rows affected (0.23 sec) Rows matched: 7 Changed: 7 Warnings: 0
변경 결과 확인
다시 SELECT 문으로 테이블을 조회하면 기존의 모든 NULL 값이 지정한 값(45500)으로 정상적으로 업데이트된 것을 확인할 수 있습니다.
mysql> select *from Employee_Information_Table;
실행 결과는 다음과 같습니다.
+----+--------+--------+ | Id | Name | Salary | +----+--------+--------+ | 1 | John | 45500 | | 2 | Carol | 45500 | | 3 | Bob | 45500 | | 4 | David | 45500 | | 5 | Robert | 45500 | | 6 | Mike | 45500 | | 7 | Sam | 45500 | +----+--------+--------+ 7 rows in set (0.00 sec)
이처럼 UPDATE ... SET ... WHERE 컬럼명 IS NULL 패턴만 기억하면, 어떤 테이블에서든 특정 필드의 NULL 값을 손쉽게 일괄 대체할 수 있습니다. 참고로 NULL 비교 시에는 = NULL이 아닌 반드시 IS NULL을 사용해야 한다는 점도 함께 기억해 두면 좋습니다.