DBMS 논리 연산자 AND OR NOT

1. 연산자 (Operator)

- 예시) 데이터를 조회할 때 SALARY에서 1,000원씩 빼서 조회하겠다 할 때 사용

 

  연산자 종류 :       1. 연결 연산자        2. 산술 연산자      3. 관계 연산자      4. SQL 연산자      5. 논리 연산자

 

 

 2. 논리 연산자
  - [ AND ] [ OR ] [ NOT ]
  - 피연산자 자리에 조건이 온다. 
  - 여러 개의 조건을 연결하거나, 조건의 결과를 반전시킬 때 사용한다. 

1. AND
- [ a 조건식 AND b 조건식 ]
- a 조건과 b 조건을 전부 만족하는 행만 조회
2. OR
- [ a 조건식 OR b 조건식 ] 
- a 조건과 b 조건 둘 중 하나만 만족하는 행을 조회
3. NOT
- [  NOT a 조건식 ]
- a 조건을 만족하지 않는 행만 조회

 

 

3. 논리 연산자 사용 방법

-- EMPLOYEES 테이블에서 부서가 영업부서(department_id = 80)이면서,
-- 봉급이 10,000 이상인 직원들의 이름, 봉급, 영업부서 조회
SELECT 
	FIRST_NAME,
	SALARY,
	DEPARTMENT_ID
FROM
	EMPLOYEES
WHERE
	DEPARTMENT_ID = 80 AND SALARY >= 10000;

 

- 해당 조건이 아닌 데이터를 조회할 때 (2가지 방법)

 

 

4. 전체 쿼리문

-----------------------------------------------------------------
-- 논리 연산자 : AND, OR, NOT
-----------------------------------------------------------------

-- EMPLOYEES 테이블에서 부서가 영업부서(department_id = 80)이면서,
-- 봉급이 10,000 이상인 직원들의 이름, 봉급, 영업부서 조회
SELECT 
	FIRST_NAME,
	SALARY,
	DEPARTMENT_ID
FROM
	EMPLOYEES
WHERE
	DEPARTMENT_ID = 80 AND SALARY >= 10000;
	
-- 이름이 David가 아닌 직원의 이름 조회
SELECT
	FIRST_NAME
FROM
	EMPLOYEES
WHERE NOT
	FIRST_NAME = 'David';

-- WHERE
--	FIRST_NAME <> 'David';


-----------------------------------------------------------------
-- [실습]
-----------------------------------------------------------------

-- 1. 직원의 이름,성, 봉급 조회 
-- 봉급이 10000 이상이거나 입사일이 2007년 1월 1일 이후인 직원만 조회
SELECT
	FIRST_NAME,
	LAST_NAME,
	SALARY
FROM
	EMPLOYEES
WHERE 
	SALARY >= 10000 OR HIRE_DATE >= '2007-01-01'

-- 2. 직원의 이름, 성, 봉급, 상사번호 조회
-- 상사번호 100 이고, 봉급이 12000이상인 직원만 조회
SELECT
	FIRST_NAME,
	LAST_NAME,
	SALARY,
	MANAGER_ID
FROM
	EMPLOYEES
WHERE 
	MANAGER_ID = 100 AND SALARY >= 12000