이 글에서는 University Database가 사용된다.
SQL에서의 Null값은 두가지 의미를 가진다.
- 처음부터 값이 존재하지 않았다. Not Exist
- 처음에는 존재했지만 지금은 잘 모르겠다. Unknown
테이블에서 null값을 가지는 튜플을 검색하고 싶을 때는 'is null' 키워드를 사용할 수 있다.
Select name
From professor
Where salary is null;
사용자가 검색을 처리하였을 때 null값이 일으킬 수 있는 문제들을 알아보자. 다음과 같은 질의가 있다.
Select name
From professor
Where (salary + 10) < 1000;
만약 professor 테이블의 salary 속성 값이 null인 튜플이 있다면 문제가 발생할 수 있고, 따라서 우리는 이 동작을 어떻게 처리해야할지 정의해야한다. 비교 연산자, 논리연산자에서 null을 어떻게 처리하기로 약속하였는지 알아보자.
Tree-valued Logic
null 값을 만나는 비교식은 결과로 무조건 Unknown을 리턴한다.
ex) 5 < null, null <> null, null = null 등
OR, AND, NOT와 같은 논리연산에서 unknown이 들어갔을 경우에는 다음과 같이 처리한다.
Where 절의 조건문의 결과는 반드시 true, false 둘 중 하나여야 하기 때문에, SQL에서는 where절의 결과가 unknown이 나올 시 false로 처리한다.
또한 AND, OR, NOT 논리연산을 처리할 때, true를 1로, false를 0으로, unknown을 0.5라는 값을 주어서 처리할 수도 있다. 참고적으로 살펴보자.
- true를 1로, false는 0으로, unknown은 0.5로 치환한다.
- AND 연산에서는 최솟값을 채택한다.
- OR연산에서는 최댓값을 채택한다.
- NOT연산에서는 1-value를 채택한다.
'데이터베이스' 카테고리의 다른 글
SQL8: Joined Relations (0) | 2021.12.23 |
---|---|
SQL7: Aggregation Function(집계함수), Group By, Having (0) | 2021.12.23 |
SQL5: Select SQL Statement2: Duplication, Set Operation (0) | 2021.12.23 |
SQL4: Select SQL Statement1 (0) | 2021.12.21 |
SQL3: DML SQL (0) | 2021.12.20 |