Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL Server

SQL Server NOT 조건(NOT 연산자) 사용법과 실전 예제 총정리

SQL Server(Transact-SQL)에서 NOT 조건NOT 연산자라고도 불리며, SELECT, INSERT, UPDATE, DELETE 문에서 특정 조건을 부정(negate)할 때 사용됩니다. 즉, 주어진 조건과 반대되는 결과를 얻고 싶을 때 활용하는 매우 유용한 구문입니다.

NOT 조건 문법

NOT '조건'

매개변수 설명

조건(condition) : 부정하고자 하는 조건을 의미합니다.

참고 : NOT 조건이 적용되면 결과 집합에는 해당 '조건'과 반대되는 레코드만 반환됩니다.

NOT 조건 활용 예제

1. IN 조건과 함께 사용

SELECT *
FROM employees
WHERE first_name NOT IN ('John', 'Dale', 'Susan');

위 예제는 employees 테이블에서 이름이 'John', 'Dale', 'Susan'이 아닌 모든 행을 반환합니다. 찾으려는 값보다 제외할 값이 명확한 경우에는 이처럼 NOT IN을 사용하는 편이 더 빠르고 간편할 수 있습니다.

2. IS NULL 조건과 함께 사용

다음은 NOT과 IS NULL 조건을 결합한 예제입니다.

SELECT *
FROM employees
WHERE last_name IS NOT NULL;

실행 결과로는 last_name(성) 열에 NULL 값이 없는 모든 레코드가 반환됩니다.

3. LIKE 조건과 함께 사용

LIKE와 NOT을 결합하면 원하는 값과 반대되는 데이터를 손쉽게 조회할 수 있습니다.

SELECT employee_id, last_name, first_name
FROM employees
WHERE last_name NOT LIKE 'A%';

LIKE 조건 앞에 NOT 연산자를 배치하면, 성이 문자 'A'로 시작하지 않는 직원들이 결과로 반환됩니다.

4. BETWEEN 조건과 함께 사용

SELECT *
FROM employees
WHERE employee_id NOT BETWEEN 200 AND 250;

이 예제에서는 employee_id가 200부터 250 사이(양 끝값 포함)에 속하지 않는 행들이 반환됩니다. 이 쿼리는 아래의 SELECT 문과 동일한 결과를 가져옵니다.

SELECT *
FROM employees
WHERE employee_id < 200
   OR employee_id > 250;

5. EXISTS 조건과 함께 사용

SELECT *
FROM employees
WHERE NOT EXISTS (SELECT *
                  FROM contacts
                  WHERE employees.last_name = contacts.last_name
                    AND employees.first_name = contacts.first_name);

위 쿼리는 contacts(연락처) 테이블에 동일한 성과 이름을 가진 레코드가 존재하지 않는 경우에만 해당 직원의 레코드를 반환합니다.

마무리

NOT 조건은 IN, IS NULL, LIKE, BETWEEN, EXISTS 등 다양한 조건과 자유롭게 조합하여 사용할 수 있으며, 제외 조건을 명확하게 표현할 때 코드의 가독성과 효율을 크게 높여줍니다. 실무에서 원하는 데이터를 정확하게 필터링하기 위해 반드시 익혀두어야 할 핵심 구문입니다.