본문 바로가기

[내일배움캠프]스파르타코딩클럽 AI 웹개발/Today I Learned

[내일배움캠프 29일차 TIL] SQL - NULL

 

 

아래 내용은 MYSQL을 기준으로 작성하였습니다

문제 요약

이름의 null 값은 No name으로 바꾸고,
동물의 생물 종, 이름, 성별, 중성화여부를 아이디 순으로 조회해햐 하는 문제이다

 

문제는 여기!

 

이 문제의 핵심은 NULL 값을 처리하는 것!

따라서 NULL 값을 처리해주는 함수를 사용해야 한다

 

 

 

 

 

 

NULL과 관련된 함수

1. IFNULL

IFNULL 함수는 컬럼에 있는 해당 컬럼의 NULL값을 다른 값으로 바꾸어주는 함수이다

SELECT IFNULL(컬럼명, "NULL인 경우 바꿀 값")
FROM 테이블 명

 

IFNULL을 사용한 정답

더보기
SELECT ANIMAL_TYPE, IFNULL(NAME, "No name") NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 

 

 

 

 

 

 

2. ISNULL

ISNULL 함수는 컬럼의 값이 NULL이면 1을 반환하고 아니면 0을 반환해주는 함수이다

SELECT ISNULL(컬럼명)
FROM 테이블명

 

 

 

 

 

 

3. IF

IF 함수는 표현식이 참이면 value1을 반환하고 거짓이면 value2를 반환하는 함수이다

SELECT IF(표현식, value1, value2)
FROM 테이블명

 

 

IF를 사용한 정답

더보기
SELECT ANIMAL_TYPE, IF(NAME IS NULL, "No name", NAME) NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 

 

 

 

 

 

4. CASE WHEN ~THEN~

CASE 함수는 조건식이 참이면 value1을 반환하고 거짓이면 value2를 반환한다.

when을 여러 개 사용해서 여러 조건을 사용할 수 있다(python의 if~elif와 비슷한 기능)

SELECT CASE WHEN 조건 THEN value1
            ELSE value2 END
FROM 테이블명

 

 

CASE를 사용한 정답

더보기
SELECT ANIMAL_TYPE,
       CASE WHEN NAME IS NULL THEN "No name"
            ELSE NAME END NAME,
       SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 

 

 

 

 

 

 

5. COALESCE

COALESCE는 컬럼1이 NULL이면 컬럼2를 탐색하고, 만약 컬럼2가 NULL이 아니면 컬럼 2의 값을 반환한다

만약 모든 컬럼이 NULL이라면 마지막 값을 반환한다.

COALESCE(컬럼1, 컬럼2, ... , NULL이 아닌 값)

 

 

COALESCE를 사용한 정답

더보기
SELECT ANIMAL_TYPE,
       COALESCE(NAME, "No name") NAME,
       SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 

 

 

오늘부터는 SQL주차의 시작이라 SQL 코드카타를 풀었다!

SQL이 낯설기도 하고 항상 파이썬만 해서 파이썬 문법에 너무 익숙해져버렸기 때문에 쉬운 문제임에도 자주 틀린다..

좀 더 SQL 문법에 익숙해질 수 있도록 꾸준히 문제를 풀어봐야겠다..!