프로그래밍/MySQL

📊 [SQL 프로젝트] 제4장 AND / OR / NOT - 여러 조건 함께 사용하기

강릉바다의 블로그 2026. 6. 27. 04:54

제4장 AND / OR / NOT - 여러 조건 함께 사용하기


오늘의 질문

여러분이 학교 행정실에서 학생 명단을 찾고 있다고 생각해 봅시다.

선생님이 이렇게 말씀하십니다.

"3학년 학생만 보여 주세요."

 

이것은 지난 장에서 배운 WHERE 하나만으로 해결할 수 있습니다.

그런데 이번에는 이렇게 말씀하십니다.

"3학년이면서 2반 학생만 보여 주세요."

 

또는

"1반 또는 2반 학생을 보여 주세요."

 

혹은

"졸업생이 아닌 학생만 보여 주세요."

 

이처럼 조건이 두 개 이상이 되면 어떻게 해야 할까요?

이때 사용하는 것이 AND, OR, NOT입니다.


학습 목표

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

  • 여러 조건을 함께 사용할 수 있다.
  • AND의 의미를 이해한다.
  • OR의 의미를 이해한다.
  • NOT의 의미를 이해한다.
  • 조건을 조합하여 원하는 데이터를 조회할 수 있다.

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

다음 SQL을 실행해 보세요.

SELECT *
FROM Customers
WHERE Country = 'Germany'
AND City = 'Berlin';

실행 결과

CustomerName City Country
Alfreds Futterkiste Berlin Germany

지난 장에서는 독일 고객이 여러 명 출력되었습니다.

이번에는 독일 고객이면서 베를린에 사는 고객만 출력되었습니다.


4-2. AND는 무엇일까요?

AND는 우리말로 하면

그리고

 

입니다.

즉,

Country = 'Germany'
그리고

City = 'Berlin'

두 조건을 모두 만족해야 합니다.

아래 그림처럼 생각하면 쉽습니다.

독일 고객
■■■■■■■■

베를린 고객
□□□□■□□□

결과
□□□□■□□□

조건이 모두 참인 데이터만 선택됩니다.


4-3. SQL을 한 줄씩 읽어 보기

SELECT *
FROM Customers
WHERE Country = 'Germany'
AND City = 'Berlin';

영어 문장처럼 읽어 보면

Customers 테이블에서
국가가 Germany이고
도시가 Berlin인
모든 데이터를 가져와라.

가 됩니다.


4-4. OR는 무엇일까요?

이번에는 다음 SQL을 실행해 보세요.

SELECT *
FROM Customers
WHERE Country = 'Germany'
OR Country = 'France';

실행 결과

독일 고객과 프랑스 고객이 모두 출력됩니다.


OR는

또는

 

이라는 뜻입니다.

둘 중 하나만 만족해도 됩니다.

독일 고객
■■■■■■

프랑스 고객
□□□□■■

결과
■■■■■■■■

AND보다 더 많은 데이터가 출력됩니다.


4-5. AND와 OR의 차이

예를 들어 학생 명단이 있다고 생각해 봅시다.

AND

3학년
그리고
2반

→ 3학년 2반 학생만 출력


OR

3학년
또는
2반

  • 모든 3학년
  • 모든 2반

둘 다 출력됩니다.

즉,

AND는 결과가 줄어들고

OR는 결과가 늘어나는 경우가 많습니다.


4-6. NOT은 무엇일까요?

이번에는 독일 고객을 제외하고 싶습니다.

SELECT *
FROM Customers
WHERE NOT Country = 'Germany';

이번에는

독일 고객을 제외한 모든 고객이 출력됩니다.


NOT은

아니다

 

라는 뜻입니다.

쉽게 말하면

조건을 뒤집습니다.

Germany
↓
Germany가 아니다.

4-7. 여러 조건을 함께 사용할 수도 있습니다.

다음 SQL을 실행해 보세요.

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

필요한 열만 선택하면서

조건도 여러 개 사용할 수 있습니다.


4-8. 가장 많이 하는 실수

① AND를 한글로 작성한다.

잘못된 예

WHERE Country='Germany'
그리고 City='Berlin'

SQL은 한국어를 이해하지 못합니다.

반드시

AND

를 사용해야 합니다.


② OR 대신 AND를 사용한다.

다음 두 SQL은 결과가 전혀 다릅니다.

WHERE Country='Germany'
AND City='Berlin'

독일의 베를린만 출력


WHERE Country='Germany'
OR City='Berlin'

독일 고객도 나오고,

다른 나라의 베를린 고객도 나올 수 있습니다.


③ 문자열에 따옴표를 빼먹는다.

WHERE Country = Germany

오류 발생


④ AND와 OR를 헷갈린다.

가장 좋은 방법은

AND를

그리고

 

OR를

또는

 

으로 우리말로 바꿔 읽는 것입니다.


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

쇼핑몰에서는

가격이 100달러 이상이고
재고가 있는 상품

병원에서는

오늘 예약했고
진료를 아직 받지 않은 환자

학교에서는

3학년이면서
정보 동아리 학생

처럼 대부분의 조회는 여러 조건을 함께 사용합니다.


실습

실습 1

독일이면서 베를린에 사는 고객을 조회하세요.

SELECT *
FROM Customers
WHERE Country = 'Germany'
AND City = 'Berlin';

실습 2

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

SELECT *
FROM Customers
WHERE Country = 'Germany'
OR Country = 'France';

실습 3

독일 고객이 아닌 고객을 조회하세요.

SELECT *
FROM Customers
WHERE NOT Country = 'Germany';

생각해 보기

다음과 같은 요청이 들어왔습니다.

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

 

이번 장에서는

문자(String)를 비교했습니다.

하지만 숫자는

  • 크다
  • 작다
  • 이상
  • 이하

도 비교할 수 있습니다.

다음 장에서는

>
<
>=
<=

와 같은 비교 연산자를 배우게 됩니다.


핵심 정리

✔ AND는 모든 조건을 만족해야 한다.

✔ OR는 하나만 만족해도 된다.

✔ NOT은 조건을 반대로 만든다.

✔ 여러 조건을 함께 사용하면 원하는 데이터를 더욱 정확하게 찾을 수 있다.


연습 문제

기본 문제

  1. AND와 OR의 차이를 설명해 보세요.
  2. NOT은 어떤 역할을 하나요?
  3. 다음 SQL의 의미를 설명해 보세요.
SELECT *
FROM Customers
WHERE Country = 'Germany'
AND City = 'Berlin';

응용 문제

  1. 독일 또는 브라질 고객을 조회하는 SQL을 작성해 보세요.
  2. 독일 고객이 아닌 고객을 조회하는 SQL을 작성해 보세요.
  3. 프랑스이면서 Paris에 사는 고객을 조회하는 SQL을 작성해 보세요.

도전 문제

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

  • 독일 또는 프랑스 고객
  • 고객 이름(CustomerName)
  • 도시(City)
  • 국가(Country)

단, 필요한 열만 선택하여 조회하세요.


다음 장 예고

이번 장에서는 여러 조건을 조합하는 방법을 배웠습니다.

하지만 아직 한 가지 불편한 점이 있습니다.

예를 들어 상품 가격을 찾을 때 다음과 같이 조건을 하나씩 써야 한다면 어떨까요?

WHERE Price = 18
OR Price = 19
OR Price = 20

또는 상품을 가격순으로 정렬해서 가장 저렴한 상품부터 보고 싶을 수도 있습니다.

다음 장에서는 ORDER BY - 원하는 순서대로 정렬하기를 배우면서 조회 결과를 오름차순과 내림차순으로 정렬하는 방법을 익혀 보겠습니다.