SQL 고득점 Kit의 네 번째 유형 IS NULL!
"값이 없음을 의미하는
NULL.NULL을 처리하는 방법을 배워봅시다."
IS NULL
NULL값이 있는 필드는 값이 없는 필드이다.NULL값은 0 또는 공백이 포함된 필드와는 다르다! (NULL값이 있는 필드는 비어 있는 필드!)- 이러한
NULL값으로 채워져 있는지 테스트하는 방법은IS NULL연산자를 사용하는 것이다!SELECT [필드명] FROM [테이블명] WHERE [필드명] IS NULL: [테이블명]의 [필드명]의 값이
NULL인 필드를 조회하라.
IS NOT NULL
IS NULL과는 달리NULL값이 아닌 필드를 조회하는 연산자이다.SELECT [필드명] FROM [테이블명] WHERE [필드명] IS NOT NULL: [테이블명]의 [필드명]의 값이
NULL이 아닌 필드를 조회하라.
🔗 LEVEL1. 이름이 없는 동물의 아이디
테이블 정보
✔ ANIMAL_INS : 동물 보호소에 들어온 동물의 정보를 담은 테이블
필드 정보
✔ ANIMAL_ID: 동물의 아이디
✔ ANIMAL_TYPE: 생물 종
✔ DATETIME: 보호 시작일
✔ INTAKE_CONDITION: 보호 시작 시 상태
✔ NAME: 이름
✔ SEX_UPON_INTAKE: 성별 및 중성화 여부
문제
✔ 동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성하라. 단, ID는 오름차순 정렬되어야 한다.
💡 POINT
NAME필드가NULL인 레코드의ANIMAL_ID값을 출력한다.ANIMAL_ID를 오름차순으로 정렬해야 한다.
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID
✔ SELECT ANIMAL_ID : ANIMAL_ID를 출력
✔ FROM ANIMAL_INS: ANIMAL_INS 테이블 선택
✔ WHERE NAME IS NULL: NAME 필드의 값이 NULL인 레코드를 조회
✔ ORDER BY ANIMAL_ID: ANIMAL_ID를 기준으로 오름차순으로 정렬한다.
🔗 LEVEL1. 이름이 있는 동물의 아이디
테이블 정보
✔ ANIMAL_INS : 동물 보호소에 들어온 동물의 정보를 담은 테이블
필드 정보
✔ ANIMAL_ID: 동물의 아이디
✔ ANIMAL_TYPE: 생물 종
✔ DATETIME: 보호 시작일
✔ INTAKE_CONDITION: 보호 시작 시 상태
✔ NAME: 이름
✔ SEX_UPON_INTAKE: 성별 및 중성화 여부
문제
✔ 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성하라. 단, ID는 오름차순 정렬되어야 한다.
💡 POINT
NAME필드가NULL아 아닌 레코드의ANIMAL_ID값을 출력한다.ANIMAL_ID를 오름차순으로 정렬해야 한다.
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID
✔ SELECT ANIMAL_ID : ANIMAL_ID를 출력
✔ FROM ANIMAL_INS: ANIMAL_INS 테이블 선택
✔ WHERE NAME IS NOT NULL: NAME 필드의 값이 NULL이 아닌 레코드를 조회
✔ ORDER BY ANIMAL_ID: ANIMAL_ID를 기준으로 오름차순으로 정렬한다.
NULL 처리하기🔗 LEVEL2. NULL 처리하기
테이블 정보
✔ ANIMAL_INS : 동물 보호소에 들어온 동물의 정보를 담은 테이블
필드 정보
✔ ANIMAL_ID: 동물의 아이디
✔ ANIMAL_TYPE: 생물 종
✔ DATETIME: 보호 시작일
✔ INTAKE_CONDITION: 보호 시작 시 상태
✔ NAME: 이름
✔ SEX_UPON_INTAKE: 성별 및 중성화 여부
문제
✔ 입양 게시판에 동물 정보를 게시하려 한다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성하라. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시하라.
💡 POINT
ANIMAL_TYPE,NAME,SEX_UPON_INTAKE필드를 출력NAME이 없는 동물의 이름은 "No name"으로 출력한다.
SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
✔ SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE
ANIMAL_TYPE 필드 출력NAME이 NULL 값이면 No name으로 출력, NULL값이 아니면 NAME 출력NAME으로 출력되게 AS NAME)SEX_UPOEN_INTAKE 필드 출력✔ FROM ANIMAL_INS: ANIMAL_INS 테이블 선택
📌
IFNULL을 이용해서NULL값 치환SELECT IFNULL([필드명], 'NULL일 때 치환값') FROM [테이블명];
- Ex)
SELECT IFNULL(Name, 'Unknown') FROM Person:
Person테이블에서Name필드값이NULL인 경우는Unknown으로 바꿔서 출력한다.
https://www.w3schools.com/sql/sql_null_values.asp
https://velog.io/@gillog/DB-MySQL-NULL-%EC%B2%98%EB%A6%ACIFNULL-CASE-COALESCE