코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

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 연산자는 ANDOR 연산자와 결합하여 보다 복잡한 조건을 만들 수 있습니다.

예제 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 연산자는 특정 조건을 부정하여 거짓이 되는 데이터를 조회할 때 사용됩니다. NOTIS NULL, IN, BETWEEN, LIKE와 함께 사용되며, 데이터 필터링을 위한 강력한 도구입니다. NOT을 활용하면 데이터베이스에서 조건에 맞지 않는 데이터를 쉽게 필터링할 수 있으며, AND, OR과 함께 사용할 때 더 복잡한 쿼리를 만들 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com