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이다.
'Computer Science > Database' 카테고리의 다른 글
[SQL] Subquery, Scalar Subquery, Inline View (0) | 2020.06.16 |
---|---|
[SQL] AVG, MIN, MAX, SUM, COUNT, GROUP BY, HAVING (0) | 2020.06.15 |
[SQL] UNION, INTERSECT, EXCEPT (0) | 2020.06.15 |
[SQL] SELECT, AS, LIKE, ORDER BY (0) | 2020.06.12 |
[SQL] INSERT, UPDATE, DELETE (0) | 2020.06.09 |