카테고리 없음

📊 [SQL 프로젝트] 제10장 IN - 여러 조건을 한 번에 비교하기

강릉바다의 블로그 2026. 6. 29. 14:43

제10장 IN - 여러 조건을 한 번에 비교하기

오늘의 질문

해외영업팀에서 고객 목록을 확인하고 있습니다.

팀장님이 말했습니다.

"이번 회의에서는 독일, 프랑스, 영국 고객만 확인하면 됩니다."

 

학생들은 보통 이렇게 작성하려고 합니다.

WHERE Country = 'Germany'
OR Country = 'France'
OR Country = 'UK';

물론 맞는 SQL입니다.

하지만 나라가 10개, 20개가 된다면 SQL이 너무 길어집니다.

이처럼 여러 값을 한 번에 비교할 때 사용하는 명령어가 바로 IN입니다.


학습 목표

이번 장을 학습하면 다음 내용을 할 수 있습니다.

  • IN의 역할을 설명할 수 있다.
  • 여러 개의 값을 한 번에 비교할 수 있다.
  • IN과 OR의 차이를 이해할 수 있다.
  • NOT IN을 이용하여 제외 조건을 만들 수 있다.
  • 실제 업무에서 IN을 활용할 수 있다.

10-1. 먼저 실행해 봅시다.

먼저 다음 SQL을 실행해 보세요.

SELECT CustomerName,
       Country
FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

실행 결과(예)

CustomerName Country
Alfreds Futterkiste Germany
Around the Horn UK
Bon app' France

지정한 세 나라의 고객만 조회됩니다.


이번에는 같은 기능을 OR로 작성해 보겠습니다.

SELECT CustomerName,
       Country
FROM Customers
WHERE Country = 'Germany'
   OR Country = 'France'
   OR Country = 'UK';

결과는 완전히 같습니다.


잠깐 생각해 보기

두 SQL은 같은 결과를 출력합니다.

그렇다면 왜 IN을 사용할까요?

이유는 간단합니다.

SQL이 훨씬 짧고 읽기 쉬워집니다.

특히 비교할 값이 많아질수록 IN의 장점이 커집니다.


10-2. IN을 한 줄씩 읽어 보기

SELECT CustomerName,
       Country
FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

한 줄씩 읽어 보면

SELECT CustomerName, Country

고객 이름과 국가를 가져오고

FROM Customers

Customers 테이블에서

WHERE

조건을 만족하는 데이터만 선택하며

Country

국가가

IN (...)

목록 안에 포함되어 있으면 출력합니다.

즉,

국가가 Germany, France, UK 중 하나인 고객만 조회하라.

라는 의미입니다.


🤔 왜 IN이 필요할까요?

생각해 봅시다.

다음과 같은 SQL은 읽기 어렵습니다.

WHERE Country='Germany'
OR Country='France'
OR Country='UK'
OR Country='Spain'
OR Country='Brazil'
OR Country='Mexico';

하지만 IN을 사용하면

WHERE Country IN (
    'Germany',
    'France',
    'UK',
    'Spain',
    'Brazil',
    'Mexico'
);

처럼 훨씬 보기 쉬워집니다.


10-3. 숫자도 사용할 수 있습니다.

IN은 문자뿐 아니라 숫자도 사용할 수 있습니다.

SELECT ProductName,
       SupplierID
FROM Products
WHERE SupplierID IN (1, 3, 5);

SupplierID가

1, 3, 5인 상품만 조회합니다.


10-4. NOT IN

반대로

목록에 없는 데이터를 찾을 수도 있습니다.

SELECT CustomerName,
       Country
FROM Customers
WHERE Country NOT IN ('Germany', 'France');

독일과 프랑스를 제외한 모든 고객이 조회됩니다.


🤔 IN은 LIKE와 어떻게 다를까요?

많은 학생들이 LIKE와 IN을 혼동합니다.

예를 들어

LIKE 'Ger%'

Germany처럼

비슷한 문자열을 찾습니다.

반면

IN ('Germany', 'France')

정확히 같은 값만 찾습니다.


💡 잠깐! 이것도 알아두세요

IN 안에 들어가는 값은

반드시 쉼표(,)로 구분합니다.

IN ('Germany', 'France', 'UK')

처럼 작성해야 합니다.


자주 하는 실수

① 쉼표를 빼먹는다.

잘못된 예

IN ('Germany' 'France')

올바른 예

IN ('Germany', 'France')

② 문자에 따옴표를 쓰지 않는다.

잘못된 예

IN (Germany, France)

올바른 예

IN ('Germany', 'France')

③ LIKE 대신 IN을 사용한다.

IN ('Ger%')

Germany를 찾지 않습니다.

LIKE와 IN은 서로 다른 기능입니다.


④ NOT IN을 반대로 이해한다.

NOT IN (...)

목록을 제외하는 조건입니다.


실무에서는 어떻게 사용할까요?

회사에서는 IN을 이용하여

  • 특정 국가 고객 조회
  • 특정 공급업체 상품 조회
  • 특정 직원의 주문 조회
  • 특정 상품 번호 조회
  • 특정 부서 직원 조회

등을 자주 수행합니다.

특히 사용자가 체크박스로 여러 항목을 선택하는 기능은 대부분 IN으로 처리합니다.


실습

실습 1

독일과 프랑스 고객을 조회하세요.

SELECT CustomerName,
       Country
FROM Customers
WHERE Country IN ('Germany', 'France');

실습 2

SupplierID가 2 또는 4인 상품을 조회하세요.

SELECT ProductName,
       SupplierID
FROM Products
WHERE SupplierID IN (2, 4);

실습 3

독일과 프랑스를 제외한 고객을 조회하세요.

SELECT CustomerName,
       Country
FROM Customers
WHERE Country NOT IN ('Germany', 'France');

실무 미션

당신은 물류팀 직원입니다.

팀장님이 말했습니다.

"배송업체 번호가 1번과 3번인 주문만 확인해 주세요."

 

다음 조건을 만족하는 SQL을 작성해 보세요.

  • Orders 테이블 사용
  • OrderID와 ShipperID 조회
  • 배송업체 번호가 1 또는 3
  • 주문번호 순으로 정렬

핵심 정리

✔ IN은 여러 값을 한 번에 비교한다.

✔ OR를 여러 번 사용하는 대신 간결하게 작성할 수 있다.

✔ 숫자와 문자 모두 사용할 수 있다.

✔ NOT IN은 목록에 없는 데이터를 찾는다.

✔ 여러 선택 항목을 처리할 때 자주 사용된다.


연습 문제

기본 문제

  1. IN은 어떤 역할을 하나요?
  2. IN과 OR의 관계를 설명해 보세요.
  3. 다음 SQL의 의미를 설명해 보세요.
SELECT CustomerName
FROM Customers
WHERE Country IN ('Germany', 'France');

응용 문제

  1. Products 테이블에서 CategoryID가 1, 3, 5인 상품을 조회하는 SQL을 작성해 보세요.
  2. Orders 테이블에서 EmployeeID가 2 또는 5인 주문을 조회하는 SQL을 작성해 보세요.
  3. Customers 테이블에서 브라질(Brazil), 멕시코(Mexico), 아르헨티나(Argentina) 고객을 조회하는 SQL을 작성해 보세요.

도전 문제

사장님이 다음과 같이 요청했습니다.

"배송업체 번호가 2번이 아닌 주문만 확인하고 싶습니다."

 

Orders 테이블에서

  • OrderID
  • ShipperID

를 조회하는 SQL을 작성해 보세요.


다음 장 예고

이번 장에서는 IN을 이용하여 여러 값을 한 번에 비교하는 방법을 배웠습니다.

하지만 숫자나 날짜가 일정 범위 안에 있는 데이터를 찾고 싶을 때는 IN보다 더 적합한 명령어가 있습니다.

예를 들어 사장님이 이렇게 요청할 수 있습니다.

"가격이 20달러에서 50달러 사이인 상품만 보여 주세요."

"2023년 1월부터 3월까지의 주문만 조회해 주세요."

 

이처럼 범위를 기준으로 데이터를 검색할 때 사용하는 명령어가 바로 BETWEEN입니다.

다음 장에서는 BETWEEN - 일정 범위의 데이터 찾기를 배우며, 숫자와 날짜를 더욱 효율적으로 검색하는 방법을 익히게 됩니다.

"언제 무엇을 사용할까?"

상황 사용할 문법
값이 정확히 하나일 때 =
여러 값 중 하나일 때 IN
글자의 일부를 찾을 때 LIKE
일정 범위를 찾을 때 BETWEEN