티스토리 뷰

오라클에서의 NULL은 매우 중요한 데이터입니다.

왜냐하면 오라클에서는 컬럼에 NULL값이 저장되는 것을 허용하는데 NULL값을 제대로 이해하지 못한채 쿼리문을 사용하면 원하지 않는 결과를 얻을 수 있기 때문입니다.

 

NULL은 "?" 혹은 무한대의 의미이기 때문에 연산, 할당, 비교가 불가능하다.

 

다음은 산술연산자를 이용해서 연봉을 계산하는 쿼리문으로 앞에서 구했던 예제에서 커미션을 연봉계산에 추가해 본 것이다. 커미션의 경우에는 NULL값을 가진 행도 있으므로 NULL값을 가진 데이터와 산술연산하면 어떤 결과가 나오는지를 확인 할 수 있는 좋은 예제이다. 확인해보자.

 

<                   >

 

NULL은 블랙홀 개념이기 때문에 계산에 의미를 갖지 못합니다. 만일 영업직인 경우 커미션 값이 0이라면 영업실적이 없기 때문에 무능력한 것으로 간주되어 연봉에 더할 커미션이 없는 것으로 급여를 12번 곱한 결과만 연봉으로 나타난다.

 

반대로 내근직인 경우에는 커미션이 책정이 되어 있지 않으므로 NULL값을 갖습니다. 이렇게 NULL이 저장되어 있는 경우에는 연봉 역시 NULL로 출력됩니다. 이미 설명한 대로 100 + 무한대 = 무한대와 같이 NULL은 블랙홀 개념이 있기 때문입니다.

 

NULL값을 저장할 경우 문제가 생기는 경우에는 특정 컬럼에 not NULL 제한 조건을 주어서 NULL값을 저장할 수 없도록 제한을 두기도 합니다.

여기서는 커미션이 NULL인 경우 연봉이 제대로 계산되지 않는 이유는 NULL이 블랙홀 개념이 있기 때문이라는 것만 이해하기로 하고, 커미션에 NULL값이 저장되어 있더라도 제대로 계산되도록 하는 방법은 존재합니다.

 

DOS에서 사용하는 명령어로

SET NULL "널이네"

: 문자열로 표현할 수 있고

SET NULL " "

: 공백으로도 표현할 수 있다.

 

별칭

1. 대문자 소문자를 구분하지만 결과는 대소문자 구분하지 않고 출력합니다.

SELECT ename, sal*12+comm Yoonsal
FROM emp;   //출력 : YOONSAL

2. " "(더블콤마) 사이의 문자는 대소문자가 구분되어 출력 가능하며, 공백 문자(, _ #)을 사용가능합니다.

SELECT ename, sal*12+comm "Yoonsal"
FROM emp;   //출력 : Yoonsal

SELECT ename, sal*12+comm "Yoon_sa#,l"
FROM emp;   //출력 : "Yoon_sa#,l"

3.한글 사용이 가능합니다.

SELECT ename, sal*12+comm "한글"
FROM emp;   //출력 : 한글

4.가독성을 위해 AS를 사용하여 별칭을 부여하는 경우도 있다.

SELECT ename, sal*12+comm AS Annsal
FROM emp;   //출력 : 

AS는 공백과 같은 개념이다. 1번과 같지만 가독성을 위해 사용한다. 열의 이름인걸 한눈에 알아챌 수 있다.

'데이터베이스(Database) 학습' 카테고리의 다른 글

2. 데이터 타입(자료형)의 종류  (0) 2021.10.22
1. 데이터베이스란?  (0) 2021.09.29