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

MySQL에서 특정 테이블의 특정 필드에 있는 모든 NULL 값 대체하는 방법

특정 테이블의 특정 필드(컬럼)에 저장된 모든 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을 사용해야 한다는 점도 함께 기억해 두면 좋습니다.