SQL Not
SQL NOT: 조건을 반전하여 데이터를 필터링
SQL NOT 연산자는 WHERE 절에서 조건을 반전하여 참이 아닌 데이터를 반환할 때 사용됩니다. 즉, NOT
연산자는
조건이 거짓일 때 해당 데이터를 선택합니다. NOT
은 여러 조건과 함께 사용되어 데이터를 더욱 세밀하게 필터링할 수 있습니다.
1. 기본 SQL NOT 문법
NOT
연산자는 WHERE 절에서 사용되며, 다음과 같은 구조로 사용됩니다:
SELECT 열이름1, 열이름2, ...
FROM 테이블이름
WHERE NOT 조건;
- 조건: 부정할 조건을 지정합니다. 조건이 참이면 데이터를 반환하지 않고, 조건이 거짓일 때 데이터를 반환합니다.
2. SQL NOT 예제
2.1 기본 예제: NOT과 비교 연산자
다음은 employees
테이블에서 부서가 Sales
가 아닌 직원을 조회하는 예제입니다.
SELECT name, department
FROM employees
WHERE NOT department = 'Sales';
이 쿼리는 부서가 Sales가 아닌 모든 직원을 반환합니다.
결과 예시:
name | department |
---|---|
Jane Roe | HR |
Alice | Engineering |
2.2 NOT과 논리 연산자
NOT
연산자는 AND 또는 OR 연산자와 결합하여 사용될 수 있습니다. 여러 조건 중 하나 또는 여러 조건을 부정할 수
있습니다.
SELECT name, department, salary
FROM employees
WHERE NOT (department = 'Sales' AND salary > 5000);
이 쿼리는 부서가 Sales이면서 급여가 5,000 이상인 조건을 만족하지 않는 직원을 반환합니다. 즉, Sales 부서에서 급여가 5,000 이하이거나, Sales 부서가 아닌 직원을 반환합니다.
3. SQL NOT과 함께 사용되는 연산자
NOT
은 다른 연산자와 함께 사용되어 조건을 부정할 수 있습니다. 대표적인 연산자는 IS NULL, IN,
BETWEEN, LIKE 등입니다.
3.1 NOT과 IS NULL
IS NULL
조건을 부정할 때는 NOT IS NULL
을 사용하여 값이 NULL이 아닌 데이터를 조회할 수 있습니다.
SELECT name, hire_date
FROM employees
WHERE hire_date IS NOT NULL;
이 쿼리는 고용 날짜가 NULL이 아닌 직원들을 반환합니다.
3.2 NOT과 IN
IN
연산자를 부정하려면 NOT IN
을 사용합니다. 특정 값 집합에 속하지 않는 데이터를 필터링할 수 있습니다.
SELECT name, department
FROM employees
WHERE department NOT IN ('Sales', 'HR');
이 쿼리는 부서가 Sales 또는 HR이 아닌 직원을 반환합니다.
3.3 NOT과 BETWEEN
BETWEEN
연산자를 부정하려면 NOT BETWEEN
을 사용하여 값이 특정 범위 밖에 있는 데이터를 조회할 수 있습니다.
SELECT name, salary
FROM employees
WHERE salary NOT BETWEEN 3000 AND 6000;
이 쿼리는 급여가 3,000에서 6,000 사이에 속하지 않는 직원을 조회합니다.
3.4 NOT과 LIKE
LIKE
연산자를 부정하려면 NOT LIKE
를 사용하여 특정 패턴과 일치하지 않는 데이터를 필터링할 수 있습니다.
SELECT name, email
FROM employees
WHERE email NOT LIKE '%@example.com';
이 쿼리는 이메일이 example.com으로 끝나지 않는 직원을 조회합니다.
4. SQL NOT과 AND/OR 결합
NOT
연산자는 AND 및 OR 연산자와 결합하여 보다 복잡한 조건을 만들 수 있습니다.
예제 1: NOT과 OR 결합
SELECT name, department, salary
FROM employees
WHERE NOT (department = 'HR' OR salary < 3000);
이 쿼리는 부서가 HR이 아니고, 동시에 급여가 3,000 이상인 직원을 반환합니다.
결과 예시:
name | department | salary |
---|---|---|
John Doe | Sales | 4000 |
Alice | Engineering | 5000 |
예제 2: NOT과 AND 결합
SELECT name, department, salary
FROM employees
WHERE NOT (department = 'Sales' AND salary >= 5000);
이 쿼리는 Sales 부서가 아니거나, 급여가 5,000 미만인 직원을 반환합니다.
5. 실전 예제
예제 1: 특정 고용 날짜가 없는 직원 조회
SELECT name, hire_date
FROM employees
WHERE hire_date IS NOT NULL;
이 쿼리는 고용 날짜가 있는 직원들만 조회합니다.
예제 2: 특정 범위 밖의 급여를 받는 직원 조회
SELECT name, salary
FROM employees
WHERE salary NOT BETWEEN 3000 AND 6000;
이 쿼리는 급여가 3,000에서 6,000 사이가 아닌 직원들을 반환합니다.
예제 3: 부서가 특정 부서가 아닌 직원 조회
SELECT name, department
FROM employees
WHERE department NOT IN ('Sales', 'HR');
이 쿼리는 Sales 또는 HR 부서에 속하지 않은 직원들을 반환합니다.
예제 4: 특정 이메일 패턴과 일치하지 않는 직원 조회
SELECT name, email
FROM employees
WHERE email NOT LIKE '%@company.com';
이 쿼리는 이메일 주소가 @company.com
으로 끝나지 않는 직원들을 조회합니다.
요약
SQL NOT 연산자는 특정 조건을 부정하여 거짓이 되는 데이터를 조회할 때 사용됩니다. NOT
은 IS NULL,
IN, BETWEEN, LIKE와 함께 사용되며, 데이터 필터링을 위한 강력한 도구입니다.
NOT
을 활용하면 데이터베이스에서 조건에 맞지 않는 데이터를 쉽게 필터링할 수 있으며, AND
, OR
과 함께 사용할 때 더 복잡한 쿼리를
만들 수 있습니다.