SQL - IS NULL: NULL 값 처리의 예술을 습득하다
안녕하세요, 데이터베이스 열심히 공부하는 여러분! SQL의 fascineting 세계로 안내해드릴 Professor Query입니다. 오늘 우리는 NULL 값을 처리하는 비밀을 풀어보겠습니다. 가상의 메모 pad를 꺼내고, 함께 빠져보겠습니다!
SQL IS NULL 연산자: NULL을 탐지하는 슈퍼히어로
Imaging you're at a party, and you're trying to find out who didn't bring a gift. 데이터베이스 세계에서 IS NULL은 마치 초대받은 손님들 중 선물을 안 принес은 사람을 찾는 초인적인 gift detector와 같습니다.
IS NULL 연산자는 데이터베이스에서 비어 있는 값(Null 값)을 검사하는 데 사용됩니다. 하지만, NULL이란 무엇인가요?
NULL은 0이 아니며, 빈 문자열도 아닙니다. NULL은 어떤 값도 없음을 의미합니다. 데이터베이스에서의 NULL은 마치 고개를 끄덕이는 이모티콘 ?♂️과 같습니다.
여기 NULL과 관련된 연산자들의 간단한 Cheat Sheet을 소개합니다:
연산자 | 설명 |
---|---|
IS NULL | 값이 NULL인지 검사 |
IS NOT NULL | 값이 NULL이 아닌지 검사 |
이제 이 슈퍼히어로를 다양한 SQL 시나리오에서 어떻게 사용할 수 있는지 살펴보겠습니다!
IS NULL과 SELECT 문: 보이지 않는 것을 찾는다
기본 사용법
간단한 예제로 시작해보겠습니다. 가정해봅시다. students
라는 테이블이 있고, student_id
, name
, email
이라는 칼럼이 있습니다. 몇몇 학생들은 이메일 주소를 아직 제공하지 않았습니다.
SELECT * FROM students
WHERE email IS NULL;
이 쿼리는 이메일 필드가 NULL인 모든 row를 반환합니다. 마치 "이메일 주소를 적지 않은 학생들을 보여달라!"고 묻는 것과 같습니다.
다른 조건과 결합
IS NULL을 다른 조건과 함께 사용할 수도 있습니다. 예를 들어:
SELECT name, student_id
FROM students
WHERE email IS NULL AND student_id > 1000;
이 쿼리는 "이메일 주소가 없고 학생 ID가 1000보다 큰 학생들의 이름과 ID를 주세요."라고 말하는 것과 같습니다. 마치 탐정처럼 조건을 좁혀가는 것입니다!
IS NULL과 COUNT() 함수: 공백을 계산한다
COUNT() 함수는 IS NULL과 함께 사용할 때 매우 유용합니다. 함께 작동하는 방법을 보겠습니다:
SELECT COUNT(*) AS total_students,
COUNT(email) AS students_with_email,
COUNT(*) - COUNT(email) AS students_without_email
FROM students;
이 쿼리는 세 가지 정보를 제공합니다:
- 학생 총 수
- 이메일 주소가 있는 학생 수
- 이메일 주소가 없는 학생 수
COUNT(*)는 모든 row를 계산하며, COUNT(email)은 NULL이 아닌 이메일 값만 계산합니다. 마치 모든 파티 손님을 계산한 다음, 선물을 가져온 손님 수를 계산하고, 이를 뺀 수를 통해 선물을 안 가져온 손님 수를找出하는 것과 같습니다!
IS NULL과 UPDATE 문: 공백을 채운다
때로는 NULL 값을 더 의미 있는 값으로 업데이트하고 싶을 수 있습니다. 다음과 같이 할 수 있습니다:
UPDATE students
SET email = '[email protected]'
WHERE email IS NULL;
이 쿼리는 모든 NULL 이메일 값을 '[email protected]'으로 변경합니다. 마치 선물을 안 가져온 파티 손님들에게 기본 선물을 주는 것과 같습니다!
더 복잡한 예제
NULL 이메일 주소를 학생의 이름과 기본 도메인을 결합하여 업데이트하고 싶다면 다음과 같이 할 수 있습니다:
UPDATE students
SET email = LOWER(REPLACE(name, ' ', '_')) || '@student.example.com'
WHERE email IS NULL;
이 쿼리는 NULL 이메일을 가진 학생들에 대해 다음과 같은 작업을 수행합니다:
- 이름을 가져온다
- 공백을 밑줄로 변경한다
- 소문자로 변환한다
- '@student.example.com'을 추가한다
따라서 "John Doe"는 "[email protected]"으로 변합니다. 마치 기억을 잃은 손님들에게 개인화된 이름 태그를 만드는 것과 같습니다!
IS NULL과 DELETE 문: 공백을 제거한다
때로는 NULL 값을 가진 row를 제거하고 싶을 수 있습니다. 다음과 같이 할 수 있습니다:
DELETE FROM students
WHERE email IS NULL;
이 쿼리는 이메일이 NULL인 모든 row를 삭제합니다. 이 작업은 조심스럽게 해야 합니다! 마치 선물을 안 가져온 파티 손님들을 내쫓는 것과 같은 일입니다.
더 안전한 접근 방식
대신, row를 먼저 다른 테이블로 이동한 다음, 주 테이블에서 삭제할 수 있습니다:
INSERT INTO incomplete_records
SELECT * FROM students
WHERE email IS NULL;
DELETE FROM students
WHERE email IS NULL;
이 접근 방식은 NULL 이메일 record를 'incomplete_records' 테이블로 이동한 후, 주 테이블에서 삭제합니다. 마치 선물을 안 가져온 손님들을 별도의 방에 보내는 것과 같습니다!
결론: NULL을 받아들이다
그렇습니다, 친愛하는 학생 여러분! 우리는 IS NULL 연산자와 그 다양한 용도를 탐구했습니다. NULL 값은 적대자가 아니라, 올바르게 처리되지 않은 정보일 뿐입니다.
SQL의 여정을 계속하면서, NULL 값 처리를 잘하는 것은 깨끗하고 정확한 데이터베이스를 유지하는 데 필수적입니다. 마치 스킬ful 파티 주최자처럼, 모든 손님을 관리하는 것과 같습니다!
계속 연습하고, 호기심을 유지하며, 기억하세요: 데이터베이스의 세계에서, 때로는 아무것도(NULL)가 모든 것을 의미할 수 있습니다!
Credits: Image by storyset