📊 [SQL 프로젝트] 제3장 WHERE - 원하는 데이터만 찾기
제3장 WHERE - 원하는 데이터만 찾기
오늘의 질문
다음과 같은 상황을 생각해 봅시다.
여러분이 고객 정보를 관리하는 회사에 취업했습니다.
고객은 모두 91명입니다.
사장님이 말합니다.
"독일 고객만 보여 주세요."
잠시 후 또 말합니다.
"런던에 사는 고객만 찾아 주세요."
이번에는
"멕시코 고객만 보여 주세요."
여러분은 모든 고객을 하나하나 읽으면서 찾아야 할까요?
91명이라면 가능할 수도 있습니다.
하지만 고객이 100만 명이라면 어떨까요?
이럴 때 필요한 것이 바로 WHERE입니다.
학습 목표
이번 장을 학습하면 다음 내용을 할 수 있습니다.
- WHERE의 역할을 설명할 수 있다.
- 조건에 맞는 데이터만 조회할 수 있다.
- 문자열 조건을 작성할 수 있다.
- 숫자 조건을 작성할 수 있다.
- 자주 발생하는 오류를 이해할 수 있다.
3-1. 먼저 실행해 봅시다.
다음 SQL을 입력해 보세요.
SELECT *
FROM Customers
WHERE Country = 'Germany';
실행 결과는 다음과 비슷합니다.
| CustomerName | City | Country |
| Alfreds Futterkiste | Berlin | Germany |
| Blauer See Delikatessen | Mannheim | Germany |
| Drachenblut Delikatessen | Aachen | Germany |
이번에는 전체 고객이 아니라
독일(Germany)에 있는 고객만 출력되었습니다.
3-2. 무엇이 달라졌을까요?
지난 장에서는 이렇게 작성했습니다.
SELECT *
FROM Customers;
모든 고객이 출력되었습니다.
이번에는 한 줄이 추가되었습니다.
WHERE Country = 'Germany';
바로 이 한 줄 때문에 결과가 완전히 달라진 것입니다.
3-3. WHERE를 한 줄씩 읽어 보기
SELECT *
FROM Customers
WHERE Country = 'Germany';
영어 문장처럼 읽어 봅시다.
SELECT
→ 가져와라.
*
→ 모든 열을.
FROM Customers
→ Customers 테이블에서.
WHERE
→ 조건은.
Country = 'Germany'
→ 국가가 Germany인 데이터만.
즉,
Customers 테이블에서 국가가 Germany인 모든 고객을 가져와라.
라는 뜻입니다.
3-4. WHERE는 '필터(Filter)'입니다.
집에서 사진을 찾는다고 생각해 봅시다.
사진이 5,000장 있습니다.
"2025년에 찍은 사진만 보여 줘."
스마트폰은 나머지 사진을 숨기고 원하는 사진만 보여 줍니다.
WHERE도 똑같습니다.
데이터를 삭제하는 것이 아닙니다.
조건에 맞는 데이터만 잠시 보여 주는 것입니다.
그래서 WHERE를 필터(Filter) 라고 생각하면 이해하기 쉽습니다.
3-5. 다른 조건도 사용할 수 있습니다.
영국 고객 찾기
SELECT *
FROM Customers
WHERE Country = 'UK';
브라질 고객 찾기
SELECT *
FROM Customers
WHERE Country = 'Brazil';
멕시코 고객 찾기
SELECT *
FROM Customers
WHERE Country = 'Mexico';
조건만 바꾸면 원하는 고객을 쉽게 찾을 수 있습니다.
3-6. 원하는 열만 함께 사용할 수도 있습니다.
모든 정보를 볼 필요가 없다면 필요한 열만 선택하면 됩니다.
SELECT CustomerName,
City
FROM Customers
WHERE Country = 'Germany';
실행 결과
| CustomerName | City |
| Alfreds Futterkiste | Berlin |
| Blauer See Delikatessen | Mannheim |
필요한 정보만 출력되어 훨씬 보기 쉽습니다.
3-7. 숫자도 비교할 수 있습니다.
WHERE는 문자뿐 아니라 숫자도 비교할 수 있습니다.
예를 들어 상품 가격이 30달러인 상품을 찾으려면
SELECT *
FROM Products
WHERE Price = 30;
가격이 정확히 30인 상품만 출력됩니다.
3-8. WHERE는 언제 사용할까요?
회사에서는 거의 모든 조회에 WHERE를 사용합니다.
예를 들면
- 오늘 주문한 고객
- 서울 고객
- 재고가 부족한 상품
- 가격이 높은 상품
- 특정 직원의 주문
대부분의 조회에는 조건이 필요합니다.
그래서
SELECT와 WHERE는 항상 함께 사용된다고 생각해도 좋습니다.
3-9. 자주 하는 실수
① 문자열에 작은따옴표를 쓰지 않는다.
잘못된 예
SELECT *
FROM Customers
WHERE Country = Germany;
Germany를 열 이름으로 착각하여 오류가 발생합니다.
올바른 예
SELECT *
FROM Customers
WHERE Country = 'Germany';
② = 대신 ==를 사용한다.
프로그래밍 언어에서는
==
를 많이 사용합니다.
하지만 SQL에서는
=
만 사용합니다.
③ WHERE를 FROM 앞에 쓴다.
잘못된 예
SELECT *
WHERE Country = 'Germany'
FROM Customers;
SQL은 순서가 매우 중요합니다.
반드시
SELECT
FROM
WHERE
순서로 작성해야 합니다.
④ Germany와 german을 혼동한다.
데이터베이스에는
Germany
라고 저장되어 있습니다.
철자가 다르면 원하는 결과가 나오지 않을 수 있습니다.
실무에서는 어떻게 사용할까요?
쇼핑몰에서는
"고객이 주문한 상품만 조회"
병원에서는
"오늘 예약한 환자만 조회"
학교에서는
"3학년 학생만 조회"
은행에서는
"잔액이 100만 원 이상인 고객 조회"
처럼 거의 모든 조회가 WHERE를 이용합니다.
즉,
WHERE는 SQL에서 가장 많이 사용하는 기능 가운데 하나입니다.
실습
실습 1
영국 고객만 조회해 보세요.
SELECT *
FROM Customers
WHERE Country = 'UK';
실습 2
브라질 고객의 이름만 조회해 보세요.
SELECT CustomerName
FROM Customers
WHERE Country = 'Brazil';
실습 3
가격이 18달러인 상품을 조회해 보세요.
SELECT *
FROM Products
WHERE Price = 18;
생각해 보기
지금까지는
'같다(=)' 만 사용했습니다.
그렇다면
- 가격이 30달러 이상인 상품은?
- 가격이 50달러 미만인 상품은?
- 가격이 20달러와 같지 않은 상품은?
이런 조건은 어떻게 작성할까요?
다음 장에서 배울 비교 연산자를 이용하면 해결할 수 있습니다.
핵심 정리
✔ WHERE는 조건을 지정하는 명령이다.
✔ 조건에 맞는 데이터만 조회한다.
✔ 문자열은 작은따옴표(' ')로 묶는다.
✔ 숫자는 작은따옴표 없이 작성한다.
✔ SELECT 다음으로 가장 많이 사용하는 SQL 문법이다.
연습 문제
기본 문제
- WHERE는 어떤 역할을 하나요?
- 문자열을 비교할 때 작은따옴표를 사용하는 이유는 무엇인가요?
- 다음 SQL이 의미하는 내용을 설명해 보세요.
SELECT *
FROM Customers
WHERE Country = 'France';
응용 문제
- Customers 테이블에서 미국(USA) 고객만 조회하는 SQL을 작성해 보세요.
- Products 테이블에서 가격이 25달러인 상품만 조회하는 SQL을 작성해 보세요.
- Customers 테이블에서 독일 고객의 이름(CustomerName)과 도시(City)만 조회하는 SQL을 작성해 보세요.
도전 문제
사장님이 다음과 같이 말했습니다.
"브라질 고객의 이름과 국가만 보고 싶습니다."
별표(*)를 사용하지 않고 SQL을 작성해 보세요.
다음 장 예고
이번 장에서는 조건이 하나인 경우를 배웠습니다.
하지만 실제 업무에서는 다음과 같은 요청이 더 많습니다.
- 독일 고객이면서(BOTH) 베를린에 사는 고객만 보여 주세요.
- 독일 고객 또는(OR) 프랑스 고객을 보여 주세요.
- 독일 고객이 아닌(NOT) 고객만 보여 주세요.
이처럼 여러 조건을 함께 사용하는 방법을 다음 장에서 배우게 됩니다.