| 꼭 기억해야 할 NULL의 특징
- 실무 데이터에서 NULL은 단순히 "비어 있다"는 뜻이 아니다.
- NULL은 '값 자체가 존재하지 않는다'는 상태다.
- NULL은 어떤 값과도 같지 않다 (심지어 NULL끼리도 다르다고 판단됨)
- = NULL, != NULL은 항상 거짓 ⇒ 반드시 IS NULL, IS NOT NULL 사용
- NULL은 계산이나 비교 시 자동으로 전파되어 전체 결과를 NULL로 만들 수 있다
- 다음과 같은 값들과는 완전히 다르다
숫자 0
빈 문자열 ''
공백 ' '
| NULL 기본 문법
- IS NULL : 특정 컬럼이 값이 없는 상태(NULL) 인지 확인할 때 사용
- IS NOT NULL : NULL이 아닌 실제 값이 존재하는 경우만 필터링할 때 유용
- IFNULL(A, B) : A가 NULL이면 B로 대체하여 출력하는 함수
- COALESCE(A, B, ...) : 여러 후보 중 가장 먼저 NULL이 아닌 값을 반환하는 함수
| 실습용 테이블
SQL은 직접 쿼리를 실행하고 수정해보는 게 핵심!
아직 실습 환경이 없다면, 아래 글을 참고해 DBeaver와 MySQL부터 먼저 세팅해 보자
[SQL] 공부/실습 환경 세팅 – DBeaver + MySQL
[SQL] 공부/실습 환경 세팅 – DBeaver + MySQL
IT 직장에서의 N년차, SQL은 선택이 아니라 필수라는 것을 느겼다.24년에 자격증 취득하고 실무에서 조금씩 써먹는 중인데 처음에 겁먹었던 것이 무색하게 할 만하다. 앞으로의 포스팅들은 SQL을
happynestledays.tistory.com
CREATE TABLE user_profile (
user_id INT,
name VARCHAR(50),
email VARCHAR(100),
phone VARCHAR(20)
);
INSERT INTO user_profile (user_id, name, email, phone) VALUES
(101, 'Alice', 'alice@example.com', NULL),
(102, 'Bob', NULL, '010-2222-3333'),
(103, 'Charlie', NULL, NULL),
(104, 'Dana', 'dana@example.com', '010-4444-5555');
1. 기본 예제 – NULL 조회
● 전화번호가 없는 사용자 찾기
SELECT *
FROM user_profile
WHERE phone IS NULL;
2. 기본 예제 – NOT NULL 필터링
● 이메일이 존재하는 사용자만 보기
SELECT *
FROM user_profile
WHERE email IS NOT NULL;
3. 실무 예제 – NULL 대체 출력 (IFNULL)
● 전화번호가 NULL이면 '미입력'으로 출력
SELECT user_id, name, IFNULL(phone, '미입력') AS phone_status
FROM user_profile;
4. 실무 예제 – 여러 컬럼 중 값이 있는 컬럼부터 조회 (COALESCE)
● email 또는 phone 중 하나라도 있으면 첫 번째 값을 조회
SELECT user_id, name, COALESCE(email, phone, '미입력') AS contact_info
FROM user_profile;
5. 실무 예제 – 값이 존재하는 행만 조회 (IS NOT NULL + OR)
● email 또는 phone 중 하나라도 NULL이 아닌 사용자만 보기
SELECT *
FROM user_profile
WHERE email IS NOT NULL OR phone IS NOT NULL;
6. 난이도 UP : 두 컬럼 중 값이 없으면 대체 출력 처리 (IF + COALESCE)
● 연락처 정보(email/phone)가 모두 NULL이면 '미입력', 그 외에는 COALESCE로 표시
SELECT user_id, name,
IF(email IS NULL AND phone IS NULL, '미입력', COALESCE(email, phone)) AS 연락처
FROM user_profile;
오늘도 고생했다!
'5분 SQL' 카테고리의 다른 글
[MYSQL 06] HAVING / MIN / MAX 개념과 실습 (0) | 2025.04.26 |
---|---|
[MYSQL 05] GROUP BY / COUNT / SUM / AVG 개념과 실습 (0) | 2025.04.24 |
[MYSQL 03] IN / BETWEEN / LIKE 개념과 실습 (0) | 2025.04.22 |
[MYSQL 02] ORDER BY, LIMIT 개념과 실습 (0) | 2025.04.21 |
[MYSQL 01] SELECT, WHERE문 개념과 실습 (0) | 2025.04.20 |