728x90
NULL
- NULL 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다. 0은 숫자이고 공백은 하나의 문자이다.
- 테이블을 생성할 때, NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 NULL 값을 포함할 수 있다.
- NULL 값을 포함하는 연산의 경우 결과 값도 NULL 값이다. 모르는 데이터에 숫자를 더하거나 빼도 결과는 마찬가지로 모르는 데이터인 것과 같다.
ex) 10 + NULL = NULL;
- 결과값을 NULL이 아닌 다른 값을 얻고자 할때 NVL(Oracle) / ISNULL(MSSQL) 함수를 사용한다. NULL 값의 대상이 숫자 유형 데이터인 경우는 주로 0으로, 문자 유형 데이터인 경우는 블랭크보다는 'X'같이 해당 시스템에서 의미 없는 문자로 바꾸는 경우가 많다.
일반형 함수 | 함수 설명 |
NVL(표현식1, 표현식2) / ISNULL(표현식1, 표현식2) |
표현식1의 결과값이 NULL이면 표현식2의 값을 출력한다. 단, 표현식1과 표현식2의 결과 데이터 타입이 같아야 한다. NULL 관련 가장 많이 사용되는 함수이므로 상당히 중요하다. |
NULLIF(표현식1, 표현식2) | 표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴한다. |
COALESCE(표현식1, 표현식2, .......) | 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다. 모든 표현식이 NULL이라면 NULL을 리턴한다. |
COALESCE
- 첫 번째 NULL이 아닌 값을 반환 ( = NULL이 아닌 최초의 표현식을 리턴)
* 공집합 *
- 조건에 맞는 데이터가 한 건도 없는 경우를 공집합이라 함
- SELECT 1 FROM DUAL WHERE 1 = 2; 와 같은 조건이 대표적인 공집합을 발생시키는 쿼리
- 인수값이 공집합인 경우, NVL( )/ISNULL( ) 사용해도 공집합이 출력
'SQLD' 카테고리의 다른 글
SQLD 개념정리 (집합 연산자) (0) | 2023.11.07 |
---|---|
SQLD 개념정리 (GROUP BY, HAVING, ORDER BY, WITH THIS) (1) | 2023.11.06 |
SQLD 개념정리 (JOIN) (0) | 2023.11.05 |
SQLD 개념정리 (함수) (0) | 2023.11.05 |
SQLD 개념정리 (관계형 데이터베이스 개요, DML, TCL) (0) | 2023.11.01 |