📌 NULL이란?
데이터베이스에서 NULL값은 특정 컬럼에서 값이 존재하지 않는 상태를 의미한다.
숫자 0 과는 전혀 다른 개념이다. 숫자 0이 들어가 있다면 값이 있는 상태이다.
빈 문자열과도 다르다. 빈 문자열이 있다면 빈 문자열이 값으로 있는 상태이다.
특정 컬럼 설정 시 NN (Not Null) 속성을 주면 해당 컬럼은 null값이 불가 하다는 의미이다. primary key로 설정될 경우 자동으로 NN도 설정된다
📌 NULL을 다루는 방법
-- NULL 조회하기
SELECT * FROM member WHERE address IS NULL;
-- NULL이 아닌 데이터만 조회하기
SELECT * FROM member WHERE address IS NOT NULL;
-- 하나라도 NULL인 데이터 조회하기
SELECT * FROM member WHERE address IS NULL OR height IS NULL;
-- 누가 봐도 이해할 수 있도록 NULL의 이름을 바꾸기 (COALESCE 함수)
SELECT COALESCE(height, '####'), COALESCE(weight, '___') from member;
📌 NULL에 대해 알아두기
- IS NULL 과 = NULL 은 다르다.
- NULL은 어떤 값이 아니기 때문에 애초에 등호를 사용할 수 있는 대상이 아니다. 그래서 =NULL은 True일 수 없다
- NULL에는 어떤 연산을 해도 결국 NULL이다
- 유효하지 않은 이상한 값 제외하기 ⭐️(age값에 음수, 지나치게 큰 수 등 이상한 값)
-- 유효한 값만 구하기
SELECT AVG(age) FROM member WHERE age BETWEEN 5 AND 100;
SELECT * FROM member WHERE address NOT LIKE '%호';
📌 NULL 변환하기
1. COALESCE 함수 : 괄호 속 인자 중에서 가장 첫 번째로 NULL이 아닌 값을 반환한다
SELECT COALESCE(height, 'N/A') FROM member;
SELECT COALESCE(height, weight * 2.3, 'N/A') FROM member;
2. IFNULL 함수 / NVL 함수: 첫 번째 인자가 NULL인 경우에는 두 번째 인자를 표시하고 NULL이 아니면 해당 값을 그대로 표현한다
MySQL에서 IFNULL, Oracle에서 NVL을 사용한다
-- MySQL
SELECT IFNULL(height, 'N/A') FROM member;
-- Oracle
SELECT NVL(height, 'N/A') FROM member;
3. IF 함수 : 첫번째 인자로 조건식이 오고 그 조건식의 결과가 True이면 두 번째 인자 리턴, False라면 세 번째 인자 리턴
SELECT IF(height IS NOT NULL, height, 'N/A') FROM member;
4. CASE 함수
SELECT
CASE
WHEN height IS NOT NULL THEN height ELSE 'N/A'
END
FROM member;
반응형
'💻 IT > DB(Tibero & Oracle & MySQL)' 카테고리의 다른 글
[DataBase] SELECT문의 작성 순서와 실행 순서 (0) | 2022.10.26 |
---|---|
[DataBase] 데이터베이스에서 데이터 조회하는 법 (0) | 2022.09.27 |
[DataBase]데이터베이스 생성하기 & 테이블 추가하기 (2) | 2022.09.20 |
What is TNSNAMES.ORA and how to set it (1) | 2022.09.05 |