TOP
class="layout-aside-left paging-number">
본문 바로가기
자격증/SQLD

데이터 모델과 SQL - Null 속성의 이해

by 기록자_Recordian 2024. 1. 4.
728x90
반응형

 

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 관련

 

SQL 집계함수 - SUM

자주 헷갈리는 집계함수 SUM 관련 문제 COL1 COL2 COL3 NULL NULL 1 2 3 2 1 NULL NULL Q1) SELECT SUM(COL1+COL2+COL3) FROM DUAL; 풀이 ▶ 1행: NULL + NULL + 1 = NULL 2행: 2 + 3 + 2 = 7 3행: 1 + NULL + NULL = NULL 따라서, 답은 7 Q2) SELEC

puppy-foot-it.tistory.com


이전글

모델이 표현하는 트랜잭션의 이해

 

다음글

본질식별자 vs 인조식별자

 

 

728x90
반응형