AND : ~이고(조건 모두 만족)
OR : ~가 아니면(하나 이상의 조건 만족)
WHERE절에서 AND OR 같은 논리 연산자를 사용할때는 각 연산자를 모두 괄호로 묶어주는 것이 좋다. (AND 와 OR이 혼용되어 사용될 경우, 연산의 우선순위에 따라 AND 가 먼저 실행된다.)
AND, OR은 != 로 NOT을 표현한다.
IN() : OR을 여러개 쓸 때 사용하며, 값 중 하나 이상과 일치하면 조건에 맞음
NOT : IN과 함께 쓰이며 열의 앞에 사용(NOT 칼럼 IN('값1','값'))
또는 WHERE 절 바로 다음에 붙어서 WHERE절 전체를 부정할 때 사용
DESC employees;
SELECT
employee_id AS 사원번호,
first_name || ' ' || last_name AS 사원명,
NVL(salary + (salary * commission_pct), salary) AS 월급,
department_id AS 부서번호
FROM
employees
WHERE
department_id = 80 AND
salary >= 10000;
--- employees 테이블에서 30번, 60번, 80번, null 부서에 근무하는 사원들만
--- 사원번호, 사원명, 기본급여, 부서번호를 나타내세요
SELECT
employee_id AS 사원번호,
first_name || ' ' || last_name AS 사원명,
NVL(salary + (salary * commission_pct), salary) AS 월급,
department_id AS 부서번호
FROM
employees
WHERE
department_id IN(30,60,80)
OR department_id IS NULL;
--- employees 테이블에서 30번, 60번, 80번 부서에 근무하지 않는 사원들만
--- 사원번호, 사원명, 기본급여, 부서번호를 나타내세요
SELECT
employee_id AS 사원번호,
first_name || ' ' || last_name AS 사원명,
NVL(salary + (salary * commission_pct), salary) AS 월급,
department_id AS 부서번호
FROM
employees
WHERE
NOT department_id IN(30,60,80)
OR department_id IS NULL;
-- > < >= <= between A and B
!! 범위 연산자에 사용되는 데이터는 숫자 뿐만 아니라 문자, 날짜까지 모두 사용된다. !!
between A and B : A 이상 B 이하
----------------------------------- **** 범위 연산자 **** -------------------------------------
-- > < >= <= between A and B
-- 범위 연산자에 사용되는 데이터는 숫자 뿐만 아니라 문자, 날짜까지 모두 사용된다.
-- employees 테이블에서 부서번호가 30, 50, 60번 부서에 근무하는 사원들중에
-- 연봉(월급*12)이 20000 이상 60000 이하인 사원들만
-- 사원번호, 사원명, 연봉(월급*12), 부서번호를 나타내어주되
-- 부서번호의 오름차순으로 정렬한 후 동일한 부서번호내에서는 연봉의 내림차순으로 나타내세요.
SELECT
employee_id AS 사원번호,
first_name || ' ' || last_name AS 사원명,
(NVL(salary + (salary * commission_pct), salary) * 12) AS 연봉,
department_id AS 부서번호
FROM
employees
WHERE
department_id IN(30,50,60)
AND (NVL(salary + (salary * commission_pct), salary) * 12)
BETWEEN 20000 AND 60000
ORDER BY
부서번호,
연봉 DESC;
------------------------------------------
SELECT
first_name,
last_name,
salary
FROM
employees
WHERE
first_name >= 'J'
AND first_name <= 'S' -- J와 S 사이의 것을 출력 (J,S 포함)
ORDER BY
first_name;
-------------또는
SELECT
first_name,
last_name,
salary
FROM
employees
WHERE
first_name BETWEEN 'J' AND 'S'
ORDER BY
first_name;