SQL - NOT 연산자

안녕하세요, SQL 열정가 여러분! SQL 연산자의 fascineting 세계를 안내해드리게 되어 기쁩니다. 특히 NOT 연산자에 대해 말이죠. SQL을 가르쳐온 지 벌써 몇 년이 되었지만, NOT 연산자를 마스터하면 데이터베이스 질의 능력이 크게 향상될 것이라 확신합니다. 그麼, 시작해보겠습니다!

SQL - NOT Operator

SQL NOT 연산자

NOT 연산자는 항상 당신의 말을 반대로 말하는 친구 같은 존재입니다. SQL에서 NOT 연산자는 조건을 부정하는 데 사용되며, boolean 표현式的 결과를 뒤집습니다. NOT를 사용할 때는 "이 조건에 맞지 않는 모든 것을 주세요"라고 말하는 것입니다.

간단한 예제로 시작해보겠습니다. students라는 테이블이 있고, 그 테이블에는 id, name, age 열이 있습니다.

SELECT * FROM students WHERE NOT age = 20;

이 질의는 20세가 아닌 모든 학생을 반환합니다. "20세가 아닌 모든 학생을 보여주세요"라고 말하는 것과 같습니다.

다른 예제를 보겠습니다:

SELECT * FROM students WHERE NOT name = 'John';

이 질의는 이름이 John이 아닌 모든 학생을 반환합니다. John이 항상 제외되네요!

SQL NOT 연산자와 LIKE 연산자

이제 NOT과 LIKE 연산자를 조합해보겠습니다. LIKE 연산자는 패턴 일치에 사용되며, NOT과 조합하면 패턴을 기준으로 제외하는 강력한 도구가 됩니다.

SELECT * FROM students WHERE name NOT LIKE 'A%';

이 질의는 이름이 'A'로 시작하지 않는 모든 학생을 반환합니다. "모두 초대하지만, 이름이 A로 시작하는 사람 제외!"라고 말하는 것과 같습니다. (안나와亚历克斯 죄송합니다!)

다른 재미있는 예제를 보겠습니다:

SELECT * FROM students WHERE email NOT LIKE '%@gmail.com';

이 질의는 Gmail을 사용하지 않는 모든 학생을 반환합니다. 아마도 덜 알려진 이메일 провайд러를 사용하는 힙스터들일 것입니다!

SQL NOT 연산자와 IN 연산자

IN 연산자는 WHERE 절에서 여러 값을 지정하는 데 사용됩니다. NOT과 조합하면 값을 목록에서 제외할 수 있습니다.

SELECT * FROM students WHERE age NOT IN (18, 19, 20);

이 질의는 18, 19, 20세가 아닌 모든 학생을 반환합니다. "10대와 젊은 성인을 제외하고 모두 보여주세요!"라고 말하는 것과 같습니다.

다른 예제를 보겠습니다:

SELECT * FROM courses WHERE department NOT IN ('Math', 'Physics', 'Chemistry');

이 질의는 수학, 물리학, 화학 학과가 아닌 모든 과목을 반환합니다. 어려운 과학을 피하고 싶은 사람들에게 완벽합니다!

SQL NOT 연산자와 IS NULL

SQL에서 NULL 값은 누락되거나 알 수 없는 정보를 나타냅니다. IS NULL 연산자는 NULL 값을 테스트하고, NOT과 조합하면 비NULL 값을 찾을 수 있습니다.

SELECT * FROM students WHERE phone_number IS NOT NULL;

이 질의는 전화번호를 제공한 모든 학생을 반환합니다. "실제로 전화할 수 있는 학생들 보여주세요!"라고 말하는 것과 같습니다.

다른 실용적인 예제를 보겠습니다:

SELECT * FROM assignments WHERE submission_date IS NOT NULL;

이 질의는 제출된 모든 과제를 반환합니다. 프로krast이너는 이 결과 집합에 없습니다!

SQL NOT 연산자와 BETWEEN

BETWEEN 연산자는 주어진 범위 내의 값을 선택합니다. NOT과 사용하면 범위 밖의 값을 선택합니다.

SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;

이 질의는 10에서 20 사이의 가격이 아닌 모든 제품을 반환합니다. 예산 쇼퍼와 럭셔리를 찾는 사람들에게 완벽합니다!

다른 예제를 보겠습니다:

SELECT * FROM events WHERE event_date NOT BETWEEN '2023-01-01' AND '2023-12-31';

이 질의는 2023년에 발생하지 않는 모든 이벤트를 반환합니다. 시간 여행자们, 주의하세요!

SQL NOT 연산자와 EXISTS

EXISTS 연산자는 서브쿼리에서 기록의 존재 여부를 테스트하는 데 사용됩니다. NOT과 조합하면 서브쿼리에서 만족하는 기록이 없는 경우를 확인합니다.

SELECT * FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);

이 복잡해 보이는 질의는 실제로 매우 간단합니다: 주문을 하지 않은 모든 고객을 반환합니다. 데이터베이스의 창가 쇼퍼를 찾는 것과 같습니다!

다른 예제를 보겠습니다:

SELECT * FROM employees e
WHERE NOT EXISTS (SELECT 1 FROM managers m WHERE m.employee_id = e.id);

이 질의는 매니저가 아닌 모든 직원을 반환합니다. 조직 내의 노동자 벌이를 찾는 좋은 방법입니다!

NOT 연산자의 모든 방법을 요약해보겠습니다:

방법 설명 예제
NOT와 기본 비교 간단한 조건 부정 WHERE NOT age = 20
NOT과 LIKE 패턴을 기준으로 제외 WHERE name NOT LIKE 'A%'
NOT과 IN 목록을 기준으로 제외 WHERE age NOT IN (18, 19, 20)
NOT과 IS NULL 비NULL 값을 찾기 WHERE phone_number IS NOT NULL
NOT과 BETWEEN 범위를 기준으로 제외 WHERE price NOT BETWEEN 10 AND 20
NOT과 EXISTS 서브쿼리에서 기록이 없는 경우 확인 WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id)

그幺, 여러분! NOT 연산자의 모든 매력을 탐구했습니다. SQL에서도 생활에서도, 원하는 것을 알기만큼 중요한 것은 원하지 않는 것을 알아야 한다는 것입니다. 즐거운 질의를 하시고, 결과가 항상 NOT NULL이 되길 바랍니다!

Credits: Image by storyset