Where 절과 비교 연산자
WHERE 절은 FROM 절 바로 뒤에 위치하며, 우리가 원하는 행(Row)만 걸러내는 필터 역할을 한다.
SELECT 열이름
FROM 테이블이름
WHERE 조건;
WHERE 절에는 '조건문'이 들어가는데, 이 조건문은 보통 '비교 연산자'를 사용하여 만들어진다. 가장 기본이 되는 비교 연산자들은 다음과 같다
| 연산자 | 의미 | 예시 |
| = | 같다 | WHERE name = '이순신' |
| != 또는 <> | 같지 않다 | WHERE name != '세종대왕' |
| > | 크다 | WHERE price > 10000 |
| < | 작다 | WHERE stock_quantity < 50 |
| >= | 크거나 같다 | WHERE price >= 10000 |
| <= | 작거나 같다 | WHERE stock_quantity <= 50 |
실습 1) customers 테이블에서 이메일이 "yisunsin@example.com"인 고객 조회하기
select * from customers
where email = 'yisunsin@example.com';

실습 2) products 테이블에서 가격(price)이 10000원 이상인 상품만 조회해 보자
select * from products
where price >= 10000

여러 조건들을 조합하는 논리 연산자: AND, OR, NOT
두 개 이상의 조건을 결합하여 더 정교한 필터링을 하고 싶을 때, 논리 연산자를 사용한다.
- AND : 양쪽의 조건이 모두 참(True) 일 때 최종적으로 참이 된다. '그리고', '~이면서'의 의미.
- OR : 양쪽의 조건 중 하나라도 참(True)이면 최종적으로 참이 된다. '또는', '~이거나'의 의미.
- NOT : 주어진 조건을 부정한다. '아닌'의 의미. (뒤에서 알아볼 IN, LIKE, BETWEEN, IS NULL 등과 함께 사용된다.)
실습 1) 가격이 5000원 이상이면서, 재고가 50개 이상인 상품 조회하기 (AND)
SELECT *
FROM products
WHERE price >= 5000
AND stock_quantity >= 50;

실습 2) 가격이 20000원이거나, 재고가 100개 이상인 상품 조회하기 (OR)
select * from products
where price = 20000
or stock_quantity >= 100;

실습 3) 가격이 20000원이 아닌 상품 조회하기 (!=)
select * from products
where price != 20000;

편리한 조건 검색(Between, In, Like, IsNull)
매번 = 이나 > 같은 기본 연산자만 사용하면 쿼리가 길어지고 비효율적일 수 있다. SQL은 더 편리한 검색을 위해 여러 유용한 연산자들을 제공한다.
BETWEEN: 특정 범위에 있는 값 찾기
예) 가격이 5,000원에서 15,000원 사이인 상품들만 모아서 보여주세요
-- SELECT * FROM products WHERE price >= 5000 AND price <= 15000;
select * from products
where price between 5000 and 15000;

NOT BETWEEN: 특정 범위에 있는 값 찾기
예) "가격이 5,000원에서 15,000원 사이인 상품들은 특별 할인 행사 대상입니다. 이 상품들을 제외 한 나머지 모든 상품 목록을 보여주세요.
-- SELECT * FROM products WHERE price < 5000 OR price > 15000;
select * from products
where price not between 5000 and 15000;

IN: 목록에 포함된 값 찾기
예) 갤럭시, 아이폰과 에어팟만 모아서 할인 행사를 하고 싶어요. 해당 상품들 목록만 뽑아주세요
-- SELECT * FROM products WHERE name ='갤럭시' OR name ='아이폰' OR name ='에어팟';
select * from products
where name in ('갤럭시', '아이폰', '에어팟');

NOT IN: 목록에 포함되지 않은 값 찾기
예) 갤럭시, 아이폰, 에어팟은 행사 상품으로 지정했으니, 이 상품들을 제외한 나머지 상품들 의 재고를 점검하고 싶습니다. 목록을 뽑아주세요
-- SELECT * FROM products WHERE name != '갤럭시' AND name != '아이폰' AND name != '에어팟';
select * from products
where name not in ('갤럭시', '아이폰', '에어팟');

LIKE: 문자열의 일부로 검색하기 (패턴 매칭)
문자열의 일부만으로 데이터를 검색하고 싶을 때 LIKE 연산자와 '와일드카드'를 함께 사용한다.
- %(퍼센트): 0개 이상의 모든 문자를 의미한다.
- 'sejong%' : sejong으로 시작하는 모든 문자열 (sejong@example.com , sejong123 등)
- '%@example.com' : @example.com'으로 끝나는 모든 문자열(aaa@example.com, hello@example.com 등)
- '% 서울%' : 서울이라는 단어를 포함하는 모든 문자열 (수도서울 , 서울에 살자 , 수도 서울에 살자 등)
- _(언더스코어): 정확히 한 개의 문자를 의미한다.
- '이_신' : '이'로 시작하고 '신'으로 끝나는 세 글자 이름 ("이순신" , "이방신" 등, 예를 들어 "이나라신"은 정확히 한 개의 문자가 아니므로 탈락)
예) customers 테이블에서 이메일이 'sejong'으로 시작하는 고객 검색하기
select * from customers
where email like 'sejong%';

NOT LIKE: 특정 패턴을 제외하고 검색하기
예) 서울특별시에 살지 않는 고객을 대상으로 마케팅을 하고 싶어요. 대상 고객 목록을 출력해 주세요.
select * from customers
where address not like '서울특별시%';

'데이터 베이스 > SQL 첫걸음(인프런 강의)' 카테고리의 다른 글
| Ch04. 조회와 정렬 - Limit (0) | 2025.10.17 |
|---|---|
| Ch04. 조회와 정렬 - order by (0) | 2025.10.17 |
| Ch04. 조회와 정렬 - Select(조회) (0) | 2025.10.13 |
| Ch03. 데이터 관리 - 제약 조건 활용 (0) | 2025.10.08 |
| Ch03. 데이터 관리 - DML(등록, 수정, 삭제) (0) | 2025.10.08 |