[Oracle] Null 에 대한 고찰

반응형

안녕하세요, 우리노트 Benjamin입니다.


IT공부를 하다보면 Null에 대해 알아야 할 일이 생깁니다. 특히 DB에서는 더욱 중요한것 같습니다.

간단한것 같으면서도 잘 이해하기 힘든게 바로 Null인데요. 오늘 한번 제대로 파헤쳐 보겠습니다.


■ 초기값을 지정하지 않은 테이블을 빈 상태로 놔두면 널값이 입력되어지게 됩니다.

   그럼 널값은 무엇일까요?

   

   → 쉽게 정답을 말하자면 모르는 값입니다.

   

    그렇다면 특정값과 NULL값을 비교하거나 연산하면 어떻게 될까요?

   

   → 10 > NULL         => 크다? 적다? 정답은 모른다 입니다. 즉 NULL값이 출력됩니다.

   → 10 + NULL         => 역시 NULL이 출력됩니다.


   모든 수 * 0 = 0 또는 0 / 모든수 = 0 이라는 절대적인 규칙에 널은 어떻게 적용 될까요?


   → NULL * 0           => 0을 기대하시는 분들이 있겠지만 결과는 NULL 입니다.

   → 0 / NULL           => 역시 NULL 입니다. 

   → 심지어 NULL / 0 도 NULL입니다.

   

    널의 위력이 조금 실감 나시나요?

   

■ AND 연산과 OR 연산에서 NULL이 어떻게 작용하는지에대해 알아보겠습니다.

         

AND

True

False

Null

True

True

False 

Null 

False

False

False 

False 

Null

 Null

False 

Null 


- 영어와 중국어를 할 수 있는 사람을 찾는 다고 가정하고 위의 표를 생각해보면 쉽게 해결 됩니다.

- 영어를 하는지 모르고(Null) 중국어를 못하면(False) 둘다 해야하므로 탈락(False)  

- 영어는 하는데(True) 중국어를 하는지 모르면(Null) 보류(Null)

- 둘다 잘 모르겠어도(Null and Null) 보류(Null)

       

OR

True

False

Null

True

True 

True 

True 

False

True 

False 

Null 

Null

True 

Null 

Null


- 이번에는 영어와 중국어중 하나만 할 수 있으면 되는 OR연산입니다.

- 영어를 하면(True) 중국어는 못하던(False) 하는지 모르던(Null) 채택(True)

- 둘다 잘 모르겠으면(Null and Null) 보류(Null)

   

Null에 대한 의문이 조금 풀렸기를 기대합니다.


댓글

Designed by JB FACTORY