[TIL] #6 프로그래머스 IS NULL

kiteB·2021년 8월 14일
0

TIL-SQL

목록 보기
5/7
post-thumbnail

📌 IS NULL


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. 이름이 없는 동물의 아이디

문제 정리

  1. 테이블 정보
    ANIMAL_INS : 동물 보호소에 들어온 동물의 정보를 담은 테이블

  2. 필드 정보
    ANIMAL_ID: 동물의 아이디
    ANIMAL_TYPE: 생물 종
    DATETIME: 보호 시작일
    INTAKE_CONDITION: 보호 시작 시 상태
    NAME: 이름
    SEX_UPON_INTAKE: 성별 및 중성화 여부

  3. 문제
    ✔ 동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 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. 이름이 있는 동물의 아이디

문제 정리

  1. 테이블 정보
    ANIMAL_INS : 동물 보호소에 들어온 동물의 정보를 담은 테이블

  2. 필드 정보
    ANIMAL_ID: 동물의 아이디
    ANIMAL_TYPE: 생물 종
    DATETIME: 보호 시작일
    INTAKE_CONDITION: 보호 시작 시 상태
    NAME: 이름
    SEX_UPON_INTAKE: 성별 및 중성화 여부

  3. 문제
    ✔ 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 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 처리하기

문제 정리

  1. 테이블 정보
    ANIMAL_INS : 동물 보호소에 들어온 동물의 정보를 담은 테이블

  2. 필드 정보
    ANIMAL_ID: 동물의 아이디
    ANIMAL_TYPE: 생물 종
    DATETIME: 보호 시작일
    INTAKE_CONDITION: 보호 시작 시 상태
    NAME: 이름
    SEX_UPON_INTAKE: 성별 및 중성화 여부

  3. 문제
    ✔ 입양 게시판에 동물 정보를 게시하려 한다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 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 필드 출력
  • NAMENULL 값이면 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

profile
🚧 https://coji.tistory.com/ 🏠

0개의 댓글