논리 연산자 NOT
어떤 조건식을 부정하는 연산자. 조건식이 거짓일 경우, TRUE를 반환합니다.
조건식 앞에 NOT을 기술하며 NOT으로 부정하는 조건식의 범위를 명확하게 하기 위해 괄호로 감쌀 수 있습니다.
비교연산자 BETWEEN, IN, LIKE, IS NULL를 사용한 SQL문의 부정 또한 하단의 예시를 통해 알아보겠습니다.
이 글의 예시는 아래 글의 초기 데이터를 사용했습니다.
예시1
기본적인 부정 SQL문입니다. 조건을 부정하기 때문에 NOT은 WHERE의 뒤에 위치합니다.
emp 테이블의 deptno컬럼의 데이터가 30인 데이터 이외의 결과를 취득합니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN deptno FORMAT 999999;
SELECT empno, ename, deptno FROM emp WHERE NOT deptno = 30;
실행 결과는 다음과 같습니다. deptno가 10, 20인 데이터만 출력됩니다.
EMPNO ENAME DEPTNO
------ ------ -------
7369 SMITH 20
7566 JONES 20
7782 CLARK 10
7839 KING 10
7902 FORD 20
7934 MILLER 10
6 rows selected.
예시2
BETWEEN 연산자를 사용한 부정 SQL문입니다. [대상 컬럼 NOT BETWEEN 하한치 AND 상한치]처럼 BETWEEN문의 앞에 NOT이 위치합니다.
emp 테이블의 mgr컬럼의 데이터가 7500 이상, 7800 이하인 데이터 이외의 결과를 취득합니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN mgr FORMAT 9999;
SELECT empno, ename, mgr FROM emp WHERE mgr NOT BETWEEN 7500 AND 7800;
실행 결과는 다음과 같습니다. mgr이 7800 초과인 데이터만 출력됩니다.(7500 미만의 데이터는 존재하지 않아 출력되지 않았습니다. 7500 미만인 데이터가 존재했다면 함께 출력됩니다.)
EMPNO ENAME MGR
------ ------ -----
7369 SMITH 7902
7566 JONES 7839
7698 BLAKE 7839
7782 CLARK 7839
예시3
IN 연산자를 사용한 부정 SQL문입니다. [대상 컬럼 NOT IN(값1, 값2, 값3, ……)]처럼 IN의 앞에 NOT이 위치합니다.
emp 테이블의 job컬럼의 데이터가 ‘SALESMAN’, ‘MANAGER’, ‘PRESIDENT’인 데이터 이외의 결과를 취득합니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
SELECT empno, ename, job FROM emp WHERE job NOT IN('SALESMAN', 'MANAGER', 'PRESIDENT');
실행 결과는 다음과 같습니다. job이 CLERK, ANALYST인 데이터만 출력됩니다.
EMPNO ENAME JOB
------ ------ ---------
7369 SMITH CLERK
7900 JAMES CLERK
7902 FORD ANALYST
7934 MILLER CLERK
예시4
LIKE 연산자를 사용한 부정 SQL문입니다. [대상 컬럼 NOT LIKE ‘문자 패턴’]처럼 LIKE의 앞에 NOT이 위치합니다.
emp 테이블의 job컬럼의 데이터에 문자 ‘L’이 포함된 데이터 이외의 결과를 취득합니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
SELECT empno, ename, job FROM emp WHERE job NOT LIKE '%L%';
실행 결과는 다음과 같습니다. job의 문자열에 L이 포함되지 않은 값인 MANAGER, PRESIDENT를 가진 데이터만 출력됩니다.
EMPNO ENAME JOB
------ ------ ---------
7566 JONES MANAGER
7698 BLAKE MANAGER
7782 CLARK MANAGER
7839 KING PRESIDENT
예시5
IS NULL 연산자를 사용한 부정 SQL문입니다. [대상 컬럼 IS NOT NULL]처럼 IS와 NULL 사이에 NOT이 위치합니다.
emp 테이블의 comm컬럼의 데이터중 NULL 데이터 이외의 결과를 취득합니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN comm FORMAT 9999;
SELECT empno, ename, comm FROM emp WHERE comm IS NOT NULL;
실행 결과는 다음과 같습니다. comm이 0, 300, 500, 1400처럼 NULL이 아닌 값을 가진 데이터만 출력됩니다.
EMPNO ENAME COMM
------ ------ -----
7499 ALLEN 300
7521 WARD 500
7654 MARTIN 1400
7844 TURNER 0