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

MySQL에서 필드의 NULL 값을 업데이트하는 방법

MySQL에서는 UPDATE 문과 IS NULL 조건을 조합하여 특정 필드의 NULL 값을 원하는 값으로 손쉽게 변경할 수 있습니다. 이 글에서는 실제 예제를 통해 단계별로 과정을 살펴보겠습니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table OrderDemo
    -> (
    -> OrderId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> OrderPrice int,
    -> OrderDatetime datetime
    -> );
Query OK, 0 rows affected (0.66 sec)

2. 데이터 삽입

이제 INSERT 명령으로 몇 개의 레코드를 추가합니다. 이때 두 번째 레코드에는 의도적으로 NULL 값을 넣습니다.

mysql> insert into OrderDemo(OrderPrice,OrderDatetime) values(200,'2016-09-12');
Query OK, 1 row affected (0.24 sec)
mysql> insert into OrderDemo(OrderPrice,OrderDatetime) values(NULL,'2002-11-18');
Query OK, 1 row affected (0.26 sec)
mysql> insert into OrderDemo(OrderPrice,OrderDatetime) values(1000,'2017-12-28');
Query OK, 1 row affected (0.15 sec)

3. 현재 데이터 확인

SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select *from OrderDemo;

출력 결과

+---------+------------+---------------------+
| OrderId | OrderPrice | OrderDatetime       |
+---------+------------+---------------------+
|       1 |        200 | 2016-09-12 00:00:00 |
|       2 |       NULL | 2002-11-18 00:00:00 |
|       3 |       1000 | 2017-12-28 00:00:00 |
+---------+------------+---------------------+
3 rows in set (0.00 sec)

OrderId가 2인 레코드의 OrderPrice 값이 NULL로 되어 있는 것을 확인할 수 있습니다.

4. NULL 값 업데이트

OrderPrice가 NULL인 행의 값을 새로운 값으로 변경하려면 아래와 같은 쿼리를 사용합니다.

mysql> update OrderDemo set OrderPrice = 6500 where OrderPrice IS NULL;
Query OK, 1 row affected (0.17 sec)
Rows matched: 1 Changed: 1 Warnings: 0

참고: NULL 값은 일반적인 비교 연산자(=)로 확인할 수 없습니다. 즉, WHERE OrderPrice = NULL은 작동하지 않으며 반드시 IS NULL 또는 IS NOT NULL을 사용해야 합니다.

5. 업데이트 결과 확인

테이블의 레코드를 다시 한번 조회하여 결과를 확인합니다.

mysql> select *from OrderDemo;

출력 결과

+---------+------------+---------------------+
| OrderId | OrderPrice | OrderDatetime       |
+---------+------------+---------------------+
|       1 |        200 | 2016-09-12 00:00:00 |
|       2 |       6500 | 2002-11-18 00:00:00 |
|       3 |       1000 | 2017-12-28 00:00:00 |
+---------+------------+---------------------+
3 rows in set (0.00 sec)

위 결과에서 볼 수 있듯이, 기존에 NULL이었던 OrderPrice 값이 정상적으로 6500으로 대체된 것을 확인할 수 있습니다.