오늘은 지난 7일차에 이어 WHERE절의 연장선상으로 복합 조건을 사용할 수 있는 논리 연산자에 배우는 날입니다! 바로 어떤 내용을 배울지 학습해 보겠습니다!
오늘 배울 '복합 조건을 사용할 수 있는 논리 연산자'. 즉, 복합 논리 연산자인 And와 Or에 대해 배울 시간입니다.
7일차에 배운 WHERE절의 연장선상이라고 했는데, 지난번에 배운 비교 연산자들을 기억하면서 학습을 진행하면 좋을 것 같습니다!
지난번 WHERE절을 이용하여 조건을 만족하는 행만을 출력하고자 했었는데, 이번에는 내가 원하는 모든 조건을 걸어 원하는 행을 출력하는 방법이라고 생각하면 될 것 같습니다!
예를들어, 급여가 10000보다 크고, 부서 번호가 90 혹은 110에 해당하는 사람들을 보고 싶은 경우가 존재한다면?
당연히 2가지를 모두 연결하는 조건이 필요하게 되며, 90 혹은 110을 필터링 할 연산자 또한 필요하게 되겠죠? 이때 사용하는 것이 바로 복합 논리 연산자입니다.
salary와 departmentNumber를 모두 선택하기 위해 AND 연산자. 90 혹은 110을 선택하기 위해 OR 연산자를 사용하게 되는 것입니다.
급여가 1만보다 큰 사람이면서 부서가 90번이거나 110인 사람
SELETE *
FROM employees
WHERE salary >= 10000
AND (department_id = '90' OR department_id = '110');
WHERE 절에서는 콤마(,)를 사용해서 연결하지 않기 때문에 반드시 복합 논리 연산자를 사용해야 합니다.
하지만 아래 IN 연산자의 경우 함수 연산자이기 때문에 콤마를 사용할 수 있습니다. (헷갈리지 않도록 잘 알아두면 좋을 것 같네요)
만약, OR로 이어야 하는 조건이 많이지게 된다면 너무 지저분해질 수 있겠죠? 그 때에는 바로 IN 연산자를 사용하면 됩니다.
급여가 1만보다 큰 사람이면서 부서가 90번 혹은 110번 혹은 130번 혹은 150번인 사람
SELETE *
FROM employees
WHERE salary >= 10000
AND (department_id IN ('90', '110', '130', '150'));
그렇다면 남은 NOT은 무엇일까요? 바로 부정을 의미하겠죠?
급여가 1만보다 큰 사람이면서 부서가 90번 혹은 110번 혹은 130번 혹은 150번이 아닌 사람
SELETE *
FROM employees
WHERE salary >= 10000
AND (department_id NOT IN ('90', '110', '130', '150'));
위의 AND, OR, NOT을 이전 시간에 배웠던 숫자 비교 연산자, 문자 비교 연산자까지 이용한다면 더 많은 조건들을 이용할 수 있겠죠? 이렇게 오늘 학습을 마쳐보도록 하겠습니다!

'공부 자료 > SQL' 카테고리의 다른 글
| [10일차] 조작함수 사용하기 part1 - 수치형 함수 (0) | 2023.01.10 |
|---|---|
| [9일차] 실전 데이터 분석 (0) | 2023.01.09 |
| [7일차] Where 원하는 행 나타내기 (0) | 2023.01.07 |
| [5일차] SQL 기본구문 익히기 (0) | 2023.01.05 |
| [4일차] SQL 필수상식 : 용어, 구조 알아보기 (1) | 2023.01.04 |