[Oracle] Null 에 대한 고찰
- Life Logs/Study Notes
- 2014. 8. 29. 08:03
안녕하세요, 우리노트 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에 대한 의문이 조금 풀렸기를 기대합니다.