본문 바로가기
Computer Science/Database

[SQL] OR, AND, NOT, IN, IS NULL

by JuHy_ 2020. 6. 15.

Logic Operation

WHERE 키워드 뒤에 조건을 작성할 때 OR, AND NOT, IN 등의 논리 연산을 통해 다양한 조건을 설정할 수 있다.

 

OR

OR 키워드를 통해서는 둘 중 하나의 조건을 만족하면 true를 반환하는 조건을 만들 수 있다.

SELECT course_id FROM section WHERE year=2019 OR sem='Fall'

위 SQL은 2019년에 열리거나 가을 학기에 열린 과목의 course_id를 가져오는 SQL이다.

 

AND

AND 키워드를 통해서는 두 가지 조건을 모두 만족하면 true를 반환하는 조건을 만들 수 있다.

SELECT course_id FROM section WHERE year=2019 AND sem='Fall'

위 SQL은 2019년 가을 학기에 열린 과목에 course_id를 가져오는 SQL이다.

 

NOT

NOT 키워드를 통해서는 조건을 만족하는 항목을 제외하도록 설정할 수 있다.

SELECT course_id FROM section WHERE year=2019 NOT sem='Fall'

위 SQL은 2019년에 열린 과목 중 가을 학기에 열리지 않은 과목의 course_id를 가져오는 SQL이다.

 

IN

IN 키워드를 통해서는 선택지 중 하나라도 해당하는 항목을 조회하도록 설정할 수 있다.

SELECT * FROM instructor WHERE dept_name IN ('Comp.Sci.', 'Physics')

위 SQL은 컴퓨터공학과나 물리학과에 속한 교수들을 조회하는 SQL이다.

 

IS NULL

IS NULL 키워드를 통해서는 해당 항목에 값이 존재하는지 확인할 수 있다.

SELECT * FROM instructor WHERE salary IS NULL

위 SQL은 salary가 존재하지 않는 교수의 이름을 불러오는 SQL이다.

 

 

Logic operation with unknown

조건을 설정하다보면 조건의 결과를 알 수 없을 때가 있다.

예를 들어 null 값과 정수를 비교하면 그 결과는 true인지 false인지 알 수 없다.

이와 같이 결과를 알 수 없는 조건을 unknown이라고 하자.

 

그렇다면 unknown 조건과 논리 연산을 수행하면 어떻게 될까.

 

 

1. OR

(unknown OR true) = true

(unknown OR false) = unknown

(unknown OR unknown) unknown

 

true 값은 어떤 값과 OR 연산을 해도 모두 true이기 때문에 unknown 과의 연산 결과도 당연히 true이다.

하지만 false나 unknown과 OR 연산을 하면 true도 될 수 있고 false도 될 수 있어 결과 역시 unknown이 된다.

 

 

2. AND

(unknown AND true) = unknown

(unknown AND false) = false

(unknown AND unknown) unknown

 

마찬가지로 false 값은 어떤 값과 AND 연산을 해도 false이므로 unknown과의 연산 결과도 false이다.

하지만 true나 unknown 값과 AND 연산을 하면 true도 될 수 있고 false도 될 수 있어 결과는 unknown이 된다.

 

 

3. NOT

NOT unknown = unknown

 

unknown 값은 어떤 값인지 모르기 때문에 역시 NOT 연산을 한 결과도 어떤 값인지 모르므로 결과는 unknown이다.