논리 연산자

  • 논리 연산자를 사용하면 여러 조건식을 묶어 하나의 조건식으로 만들 수 있다.
  • and : 좌우 조건식이 모두 참일 경우 참
  • or : 좌우 조건식이 모두 거짓일 경우 거짓
  • not : 조건식의 결과를 부정
  • between and : 범위 조건
  • in : 항목 조건

ex)

-- 10번 부서에서 근무하고 있는 직무가 MANAGER인 사원의 사원번호, 이름, 근무부서, 직무를 가져온다.
select empno, ename, deptno, job
from emp
where deptno = 10 and job = 'MANAGER';

ex)

-- 1982년 1월 1일 이후에 입사한 사원의 사원번호, 이름, 입사일을가져온다.
select empno, ename, hiredate
from emp
where hiredate >= '1982/01/01';

ex)

-- 10번 부서에서 근무하고 있는 직무가 MANAGER인 사원의 사원번호, 이름, 근무부서, 직무를 가져온다.
select empno, ename, deptno, job
from emp
where deptno = 10 and job = 'MANAGER';

ex)

-- 입사년도가 1981년인 사원중에 급여가 1500이상인 사원의 사원번호, 이름, 급여, 입사일을 가져온다.
select empno, ename, sal, hiredate
from emp
where hiredate >= '1981/01/01' and hiredate <= '1981/12/31' and sal >=1500;

select empno, ename, sal, hiredate
from emp
where hiredate between '1981/01/01' and '1981/12/31' and sal >=1500;

ex)

-- 20번 부서에 근무하고 있는 사원 중에 급여가 1500 이상인 사원의 사원번호, 이름, 부서번호, 급여를 가져온다.
select empno, ename, deptno, sal
from emp
where deptno = 20 and sal >= 1500;

ex)

-- 직속상관 사원 번호가 7698번인 사원중에 직무가 CLERK인 사원의 사원번호, 이름, 직속상관번호, 직무를 가져온다.
select empno, ename, mgr, job
from emp
where mgr = 7698 and job = 'CLERK';

ex)

-- 급여가 2000보다 크거나 1000보다 작은 사원의 사원번호, 이름, 급여를 가져온다.
select empno, ename, sal
from emp
where sal >2000 or sal <1000;

select empno, ename, sal
from emp
where not(sal >=1000 and sal <=2000);

select empno, ename, sal
from emp
where not(sal between 1000 and 2000);

ex)

-- 부서번호가 20이거나 30인 사원의 사원번호, 이름, 부서번호를 가져온다.
select empno, ename, deptno
from emp
where deptno = 20 or deptno = 30;

ex)

-- 직무가 CLERK, SALESMAN, ANALYST인 사원의 사원번호, 이름, 직무를 가져온다.
select empno, ename, job
from emp
where job = 'CLERK' or job = 'SALESMAN' or job = 'ANALYST';

select empno, ename, job
from emp
where job in ('CLERK','SALESMAN','ANALYST');

ex)

-- 사원 번호가 7499, 7566, 7839가 아닌 사원들의 사원번호, 이름을 가져온다.
select empno, ename
from emp
where empno <> 7499 and empno <> 7566 and empno <> 7839;

select empno, ename
from emp
where not (empno = 7499 and empno = 7566 and empno = 7839);

select empno, ename
from emp
where not (empno in(7499,7566,7839));