SQLD 1과목 데이터 모델과 SQL
<목차>
|
4. Null 속성의 이해
Null 정의
- 값이 존재하지 않는 것으로 확정되지 않은 값을 표현할 때 사용
- 어떤 값보다 크거나 작지도 않고, 공백이나 0과 달리 비교 자체가 불가능한 값
- 0 또는 공백과 다름. (0은 숫자, 공백은 문자)
[특성]
- Null 값과의 수치 연산은 Null 값을 리턴
- Null 값과의 비교연산은 거짓 (False)를 리턴
- 어떤 값과 비교할 수도 없으며, 특정 값보다 크다, 적다라고 표현 불가
- Null 값의 비교 연산은 IS NULL, IS NOT NULL 이라는 정해진 문구를 사용해야 제대로 된 결과 산출
- 테이블 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 Null 값을 포함할 수 있음.
[Null 값 조회]
- Null 값을 조회할 때는 조건절(WHERE 절)에 ISNULL 또는 IS NOT NULL 사용
SELECT * FROM USER WHERE PHONE IS NOT NULL; |
[Null 포함 연산의 결과]
연산 | 연산의 결과 |
NULL + 2, 2 + NULL | NULL |
NULL - 2, 2 - NULL | NULL |
NULL * 2, 2 * NULL | NULL |
NULL / 2. 2 / NULL | NULL |
Null 관련 함수
NVL / ISNULL : 산술적인 계산에서 데이터 값이 Null 일 경우에 유용하게 사용.
- 칼럼 간 계산을 수행하는 경우 Null 값이 존재하면 해당 연산 결과가 Null 값이 되므로
해당 함수를 사용하여 Null 값을 변환시킨 후 원하는 데이터를 얻음.
(NULL 인 값을 제거하고, 그 대신 특정 숫자나 다른 값 출력)
일반형 함수 | 함수 설명 | 예제 |
NVL(표현식 1, 표현식 2) / ISNULL (표현식1, 표현식 2) * ORACLE - NVL SQL Server - ISNULL |
표현식1의 결과값이 NULL 이면 표현식 2의 값을 출력 단, 표현식1과 표현식2의 결과 데이터 타입이 같아야 함. NULL 관련 가장 많이 사용되는 함수 NULL 관련 함수 중 중요도 높음. |
SELECT NVL(NULL, 3) FROM GRADE > NULL 값이 3으로 변경됨. |
NVL2 | NVL에 비해 파라미터가 하나 더 있음. NVL2(값, 'NULL이 아닐때 출력 값', 'NULL일때 출력 값') |
SELECT NVL2(BONUS, '보너스대상자', '미대상자') FROM SALARY |
NULLIF (표현식1, 표현식2) | 표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴 | NULLIF(EXPR1, EXPR2) |
COALESCE (표현식1, 표현식2, ....) | 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타냄. 모든 표현식이 NULL 이라면 NULL 리턴 |
COALESCE(EXPR1, EXPR2, ...) > 만일 모든 EXPR이 NULL 이라면 NULL 리턴 |
예제1 (출처: 자격검정 실전문제 63p. 45번 문제)
아래 TAB1을 보고 SQL 실행 결과를 작성하시오.
[TAB1]
COL1 | COL2 |
a | NULL |
b | " |
c | 3 |
d | 4 |
e | 3 |
SELECT ISNULL(COL2, 'X')
FROM TAB1
WHERE COL1='a';
정답: X
예제2 (출처: 자격검정 실전문제 63p. 46번 문제)
사원 테이블에서 MGR 의 값이 7968과 같으면 NULL을 표시하고, 같지 않으면 MGR을 표시하려고 한다.
아래 SQL 문장의 (ㄱ) 안에 들어갈 함수명을 작성하시오.
SELECT ENAME, EMPNO, MGR, (ㄱ) (MGR, 7692) as NM FROM EMP; |
답은 NULLIF
예제3 (출처: 자격검정 실전문제 64p. 48번 문제)
다음 중 아래와 같은 데이터 상황에서 SQL의 수행 결과는?
[TAB1]
C1 | C2 | C3 |
1 | 2 | 3 |
2 | 3 | |
3 |
SELECT SUM(COALESCE(C1,C2,C3))
FROM TAB1
답: 6
※ 집계함수와 NULL 관련
이전글
다음글
'자격증 > SQLD' 카테고리의 다른 글
2과목 SQL 기본 및 활용 - 관계형 데이터베이스 개요 (1) | 2024.01.08 |
---|---|
데이터 모델과 SQL - 본질식별자 vs 인조식별자 (0) | 2024.01.07 |
데이터 모델과 SQL - 모델이 표현하는 트랜잭션의 이해 (1) | 2024.01.02 |
데이터 모델과 SQL - 관계와 조인의 이해 (1) | 2024.01.01 |
데이터 모델과 SQL - 정규화 (2) | 2023.12.30 |