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

MySQL에서 NULL 값 찾아 새 값으로 업데이트하는 방법 (IS NULL 활용)

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은 값 자체가 아니라 '알 수 없는 상태'를 의미하기 때문에 등호(=) 연산자로는 비교할 수 없습니다.