SQL - NULL 값 이해: 알 수 없는 것을 이해하다

안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘은 SQL의 매력적인 측면 중 하나를 배울 것입니다. 초보자들에게 종종 머리를 긁게 만드는 NULL 값입니다. 코드를 한 줄도 작성해본 적이 없다면 걱정 마세요; 나는 이 개념을 단계별로 안내해드릴 것입니다. 수년 동안 수많은 학생들을 가르친 경험을 바탕으로 말이죠. 그럼, 당신의 좋아하는 음료를 한 잔 마시고, 이 SQL 모험을 함께 떠나 보겠습니다!

SQL - NULL Values

NULL 값이란?

먼저, NULL이 SQL에서 무엇을 의미하는지 이해해 보겠습니다. 상상해 보세요. 당신이 양식을 작성하고 있고, 중간 이름을 묻는 필드가 있습니다. 하지만 당신은 중간 이름이 없습니다. "중간 이름이 없습니다"라고 쓰는 것은 정확하지 않습니다. 당신은 "중간 이름이 없다"고 말하고 싶지 않습니다. 그냥 빈칸으로 두는 것입니다. 그 빈칸이, 친구들이여, SQL에서 NULL이 의미하는 것입니다.

SQL에서 NULL은 데이터베이스에 존재하지 않는 데이터 값을 나타내는 특별한 마커입니다. zero가 아니고, 빈 문자열도 아닙니다. 어떤 값도 존재하지 않는 것입니다. SQL이 "모르겠다"或者说 "이 정보는 사용할 수 없다"고 말하는 방식으로 생각해 보세요.

NULL 값을 허용하지 않는 테이블 생성

이제 NULL이 무엇인지 이해했으므로, NULL 값을 허용하지 않는 테이블을 어떻게 생성할 수 있는지 살펴보겠습니다. 이는 각 레코드에 반드시 필요한 데이터가 있는 경우에 특히 유용합니다.

예제 1: 학생 테이블 생성

CREATE TABLE Students (
StudentID INT NOT NULL,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Age INT NOT NULL,
Email VARCHAR(100)
);

이 예제에서 우리는 "Students" 테이블을 생성하고 있습니다. 이를 설명해 보겠습니다:

  1. StudentID, FirstName, LastName, 그리고 Age는 모두 NOT NULL로 선언되었습니다. 이는 이 필드들은 반드시 값을 가져야 하며, 빈칸으로 두어서는 안된다는 뜻입니다.
  2. Email 필드는 NOT NULL이 없습니다. 이는 학생이 이메일 주소를 제공하지 않아도 상관없다는 뜻입니다.

NOT NULL을 사용하여 우리는 데이터베이스에게 "이 정보는 반드시 필요하다"고 알립니다.

테이블에서 NULL 값을 업데이트

occasionally, you might find yourself with NULL values in your table that you want to update. Let's look at how we can do that.

예제 2: NULL 이메일 주소 업데이트

상상해 보세요. 우리는 모든 학생들에게 이메일 주소가 필요하다는 것을 깨달았고, 현재 NULL인 이메일 주소를 업데이트하고 싶습니다.

UPDATE Students
SET Email = '[email protected]'
WHERE Email IS NULL;

이 쿼리는 다음과 같은 작업을 수행합니다:

  1. Students 테이블을 조회합니다.
  2. Email IS NULL인 레코드에 대해, 이메일을 '[email protected]'로 설정합니다.

이는 "아직 이메일을 제공하지 않은 학생들에게 이 임시 이메일 주소를 사용하자"는 것과 같은 말입니다.

레코드에서 NULL 값을 삭제

occasionally, you might want to remove records that have NULL values in certain fields. Let's see how we can do that.

예제 3: 나이 정보가 없는 학생 삭제

DELETE FROM Students
WHERE Age IS NULL;

이 쿼리는 Age 필드가 NULL인 학생 레코드를 삭제합니다. 이는 "학생의 나이를 모르겠다면, 그 레코드를 데이터베이스에서 제거하자"는 것과 같은 말입니다.

이러한 작업은 신중하게 행해야 합니다! 항상 이러한 쿼리를 실행하기 전에 정말로 이 레코드를 삭제하고 싶은지 확인하세요.

WHERE 절에서 NULL을 처리

NULL 값은 일반 비교 연산자를 사용할 수 없기 때문에 WHERE 절에서 처리하는 것이 어렵습니다. NULL 값을 올바르게 확인하는 방법을 살펴보겠습니다.

예제 4: 누락된 이메일 주소를 가진 학생 찾기

SELECT FirstName, LastName
FROM Students
WHERE Email IS NULL;

이 쿼리는 이메일 주소를 제공하지 않은 모든 학생의 목록을 보여줍니다. 주의할 점은 IS NULL을 사용하는 것이지 = NULL을 사용하지 않는다는 것입니다. 이는 자주 저지르는 실수 중 하나입니다!

NULL과 집계 함수

NULL 값은 집계 함수의 동작에도 영향을 미칠 수 있습니다. 예를 들어 보겠습니다.

예제 5: 평균 나이 계산

SELECT AVG(Age) AS AverageAge
FROM Students;

이 쿼리는 모든 학생의 평균 나이를 계산합니다. 흥미로운 점은 NULL 값이 이 계산에서 완전히 무시된다는 것입니다. 따라서 10명의 학생이 있지만, 그 중 8명만 나이를 기재한 경우, 평균은 그 8명의 나이를 기준으로 계산됩니다.

결론

이제 여러분은 SQL에서 NULL 값의 세계를 여행했습니다. NULL을 허용하지 않는 테이블을 생성하고, NULL 값을 업데이트하거나 삭제하는 방법, 그리고 쿼리에서 NULL을 처리하는 방법을 배웠습니다.

NULL은 zero가 아니고, 빈 문자열도 아닙니다. 값을 존재하지 않는 것입니다. SQL이 "모르겠다"고 말하는 방식으로 생각해 보세요. 이제 이러한 "모르겠다"는 상황을 프로처럼 처리할 수 있습니다!

이 개념을 계속 연습하면, 데이터베이스 세계를 자신감 있게 탐험할 수 있을 것입니다. 즐겁게 쿼리 작성하시길 바랍니다!

Credits: Image by storyset