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

MySQL에서 NULL 값인 필드를 특정 값으로 업데이트하는 방법

MySQL에서 NULL로 저장된 데이터를 특정 값으로 일괄 변경해야 하는 경우가 종종 있습니다. 예를 들어, 시험 점수가 아직 입력되지 않아 NULL로 남아 있는 레코드를 기본값으로 채우고 싶을 수 있습니다. 이럴 때는 UPDATE 문과 함께 IS NULL 조건을 사용하면 됩니다.

일반적인 비교 연산자(=)로는 NULL을 비교할 수 없기 때문에 반드시 IS NULL을 사용해야 한다는 점이 핵심입니다. 실제 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 학생 점수를 저장할 테이블을 생성합니다.

mysql> create table DemoTable
(
    StudentScore int
);
Query OK, 0 rows affected (0.47 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 값이 있는 레코드와 NULL인 레코드를 함께 넣어 보겠습니다.

mysql> insert into DemoTable values(89);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(NULL);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(45);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(NULL);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(56);
Query OK, 1 row affected (0.14 sec)

3. 현재 데이터 확인하기

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

mysql> select *from DemoTable;

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

+--------------+
| StudentScore |
+--------------+
|           89 |
|         NULL |
|           45 |
|         NULL |
|           56 |
+--------------+
5 rows in set (0.00 sec)

총 5개의 레코드 중 2개가 NULL로 되어 있는 것을 확인할 수 있습니다.

4. NULL 값을 특정 값으로 업데이트하기

이제 IS NULL 조건을 활용하여 NULL인 필드만 골라서 원하는 값으로 변경합니다.

mysql> update DemoTable set StudentScore=30 where StudentScore IS NULL;
Query OK, 2 rows affected (0.34 sec)
Rows matched: 2 Changed: 2 Warnings: 0

쿼리 실행 결과, NULL이었던 2개 행이 성공적으로 변경되었습니다.

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

다시 한번 테이블을 조회하여 결과를 확인합니다.

mysql> select *from DemoTable;

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

+--------------+
| StudentScore |
+--------------+
|           89 |
|           30 |
|           45 |
|           30 |
|           56 |
+--------------+
5 rows in set (0.00 sec)

NULL이었던 두 개의 레코드가 모두 30으로 변경된 것을 볼 수 있습니다.

참고: 다른 유용한 방법들

상황에 따라 아래와 같은 함수들을 활용할 수도 있습니다.

  • IFNULL(): 조회 시에만 NULL을 대체 값으로 표시하고 싶을 때 사용합니다. 예: SELECT IFNULL(StudentScore, 30) FROM DemoTable;
  • COALESCE(): 여러 컬럼 중 NULL이 아닌 첫 번째 값을 반환하며, 위와 같은 용도로 활용 가능합니다.
  • UPDATE ... SET col = IFNULL(col, 값): 이미 값이 있는 데이터는 그대로 두고, NULL인 경우에만 새 값을 채울 때 유용합니다.

주의할 점은 WHERE 절에서 = NULL이 아닌 IS NULL을 사용해야 한다는 것입니다. SQL에서 NULL은 '알 수 없는 값'을 의미하기 때문에 등호 비교가 항상 거짓으로 처리됩니다.