SQL - IS NOT NULL: 초보자 가이드
안녕하세요, 미래의 SQL 마법사 여러분! 오늘은 SQL의 흥미로운 측면을 다룰 예정입니다. 많은 학생들이 연간 어려움을 겪곤 했던 부분이지만, 걱정 마세요. 이 튜토리얼이 끝나면 NULL 값을 마스터하실 수 있을 것입니다!
SQL IS NOT NULL 연산자
기본적인 것부터 시작해보겠습니다. SQL에서 NULL은 특별한 값(또는值의 결여)으로, 누락된 정보나 알 수 없는 정보를 나타냅니다. 마치 양식을 작성할 때 필드를 비워 두는 것처럼, 데이터베이스에서 NULL은 그와 같습니다.
여기서 어려운 점이 생깁니다: 일반 비교 연산자인 = 또는 !=을 NULL과 사용할 수 없습니다. 여기서 우리의 영웅이 등장합니다 – 바로 IS NOT NULL 연산자입니다!
기본 문법
IS NOT NULL의 기본 문법은 다음과 같습니다:
SELECT column_name(s)
FROM table_name
WHERE column_name IS NOT NULL;
현실 세계의 예제로 설명해보겠습니다. students
테이블이라고 가정해봅시다. 이 테이블에는 student_id
, name
, email
필드가 있습니다.
SELECT name, email
FROM students
WHERE email IS NOT NULL;
이 쿼리는 데이터베이스에 이메일 주소가 있는 학생들만 이름과 이메일을 반환합니다. 마치 이렇게 말하는 것처럼, "안녕 데이터베이스, 이메일 필드를 실제로 작성한 학생들을 알려줘!"
왜 '!=' 또는 '<>'을 사용하지 않을까요?
당신은 "왜 email != NULL
을 사용하지 못할까요?"라고 물을 수도 있습니다. 훌륭한 질문입니다! SQL에서 NULL은 알 수 없는 값을 나타냅니다. 알 수 없기 때문에, 어떤 것과도 비교할 수 없습니다. 사과를 비교하는 것과 마찬가지로, 아무 것도 없는 것과 비교할 수 없습니다.
예제를 보겠습니다:
-- 이 쿼리는 기대하는 대로 작동하지 않습니다
SELECT name, email
FROM students
WHERE email != NULL;
-- 이것이 정확한 방법입니다
SELECT name, email
FROM students
WHERE email IS NOT NULL;
첫 번째 쿼리는 테이블의 데이터에 관계없이 결과를 반환하지 않습니다. 두 번째 쿼리는 이메일에 값이 있는 모든 행을 정확하게 반환합니다.
IS NOT NULL과 COUNT() 함수
이제 기본적인 것을 이해했으므로, IS NOT NULL이 다른 SQL 함수와 어떻게 사용될 수 있는지 살펴보겠습니다. 예를 들어, COUNT() 함수입니다.
비NULL 값을 계산하는 방법
COUNT() 함수는 특정 기준을 충족하는 행의 수를 계산하는 데 사용됩니다. IS NOT NULL과 결합하면 특정 열에 값이 있는 행의 수를 알 수 있습니다.
SELECT COUNT(*) AS total_students,
COUNT(email) AS students_with_email
FROM students;
이 쿼리에서 COUNT(*)
는 모든 행을 계산하며, COUNT(email)
은 이메일이 NULL이 아닌 행만 계산합니다. 데이터의 완전성을 빠르게 확인하는 방법입니다!
백분율 계산
이를 한 단계 더 발전시켜, 이메일을 제공한 학생의 백분율을 계산할 수 있습니다:
SELECT
COUNT(*) AS total_students,
COUNT(email) AS students_with_email,
(COUNT(email) * 100.0 / COUNT(*)) AS email_percentage
FROM students;
이 쿼리는 총 학생 수와 이메일을 제공한 학생 수뿐만 아니라, 학생들이 이메일을 제공한 백분율을 계산합니다. 마치 출석을 체크하고 숙제를 한 학생의 비율을 계산하는 것과 같습니다!
IS NOT NULL과 DELETE 문
때로는 누락된 데이터를 제거하여 데이터베이스를 정리해야 합니다. 이는 IS NOT NULL이 DELETE 문과 유용하게 사용될 수 있는 경우입니다.
기본 DELETE와 IS NOT NULL
특정 열이 NULL인 모든 행을 삭제하는 방법을 보겠습니다:
DELETE FROM students
WHERE phone_number IS NULL;
이 쿼리는 전화번호가 제공되지 않은 모든 학생 기록을 제거합니다. 마치 주소帳에서 모든 공백 줄을 지우는 것과 같습니다.
조건 결합
IS NOT NULL을 다른 조건과 결합할 수도 있습니다:
DELETE FROM students
WHERE graduation_year IS NULL
AND enrollment_date < '2020-01-01';
이 쿼리는 졸업 연도가 설정되지 않고 2020년 이전에 등록한 기록을 제거합니다. 이는 오래된, 불완전한 기록을 정리하는 방법입니다.
IS NOT NULL과 UPDATE 문
마지막으로, IS NOT NULL이 UPDATE 문에서 어떻게 사용될 수 있는지 살펴보겠습니다.
비NULL 값을 업데이트하는 방법
가정해보겠습니다. 모든 이메일 주소가 NULL이 아닌 경우에만 소문자로 업데이트하고 싶습니다:
UPDATE students
SET email = LOWER(email)
WHERE email IS NOT NULL;
이 쿼리는 모든 기존 이메일 주소를 소문자로 변경하지만, NULL이 아닌 경우에만 그렇습니다. 연락처 목록에서 모든 이메일 주소가 일관된 형식으로 되어 있는지 확인하는 것과 같습니다.
조건부 업데이트
IS NOT NULL을 더 복잡한 UPDATE 문에서도 사용할 수 있습니다:
UPDATE students
SET status = 'Active'
WHERE enrollment_date IS NOT NULL
AND graduation_date IS NULL;
이 쿼리는 등록 날짜가 있고 졸업 날짜가 없는 모든 학생의 상태를 'Active'로 설정합니다. 이는 정보를 기반으로 학생 상태를 자동으로 업데이트하는 방법입니다.
결론
이제 여러분은 IS NOT NULL의 세계를 탐험했고, SELECT, COUNT, DELETE, UPDATE 문에서 그 사용법을 배웠습니다. NULL 값을 올바르게 처리하는 것은 데이터베이스 관리에서 매우 중요합니다. 정확한 결과를 얻고, NULL 결과를 피하는 차이입니다!
이제 배운 방법들을 요약한 빠른 참조 표를 제공합니다:
연산 | 예제 |
---|---|
SELECT | SELECT * FROM table WHERE column IS NOT NULL |
COUNT | SELECT COUNT(column) FROM table |
DELETE | DELETE FROM table WHERE column IS NULL |
UPDATE | UPDATE table SET column = value WHERE other_column IS NOT NULL |
이 쿼리들을 연습하고, 이를 통해 놀아보세요. 그러면 NULL 값을 처리하는 것이 자연스러워질 것입니다. 계속 코딩하고, 배우고, 기억하세요 – 데이터베이스의 세계에서, 때로는 무(Null)이 모든 것을 의미할 수 있습니다!
Credits: Image by storyset