티스토리 뷰
반응형
🎯 MySQL WHERE 절 정리
주요 키워드: MySQL, WHERE, 조건 조회, 논리 연산자, 비교 연산자, SQL 필터링
🧭 개요
WHERE
절은 SELECT 문에서 특정 조건에 부합하는 레코드만 조회할 때 사용됩니다.=
, !=
, BETWEEN
, LIKE
, IN
, IS NULL
등의 조건 연산자와 함께 사용되며, 복합 조건을 위한 AND
, OR
연산자도 함께 활용됩니다.
1️⃣ 비교 연산자 활용
📌 =
(같음)
SELECT menu_name, menu_price, orderable_status
FROM tbl_menu
WHERE orderable_status = 'Y';
📌 숫자 비교
SELECT menu_name, menu_price, orderable_status
FROM tbl_menu
WHERE menu_price = 13000;
📌 !=
, <>
(같지 않음)
SELECT menu_code, menu_name, orderable_status
FROM tbl_menu
WHERE orderable_status != 'Y';
📌 대소 비교 (>
, <
, >=
, <=
)
SELECT menu_code, menu_name, menu_price
FROM tbl_menu
WHERE menu_price > 20000;
SELECT menu_code, menu_name, menu_price
FROM tbl_menu
WHERE menu_price <= 20000;
2️⃣ AND
연산자 활용
AND
는 모든 조건이 참일 때만 해당 레코드를 반환합니다.
SELECT menu_name, menu_price, category_code, orderable_status
FROM tbl_menu
WHERE orderable_status = 'Y' AND category_code = 10;
SELECT menu_code, menu_name, menu_price, category_code, orderable_status
FROM tbl_menu
WHERE menu_price > 5000 AND category_code = 10;
3️⃣ OR
연산자 활용
OR
는 하나라도 참이면 해당 레코드를 반환합니다.
SELECT menu_name, menu_price, category_code, orderable_status
FROM tbl_menu
WHERE orderable_status = 'Y' OR category_code = 10
ORDER BY category_code;
SELECT menu_code, menu_name, menu_price, category_code, orderable_status
FROM tbl_menu
WHERE menu_price > 5000 OR category_code = 10;
🧠
AND
가OR
보다 우선순위가 높습니다. 순서를 명확히 하려면 괄호를 사용하세요.
SELECT 1 OR 0 AND 0; -- 결과: 1
SELECT (1 OR 0) AND 0; -- 결과: 0
SELECT menu_code, menu_name, menu_price, category_code, orderable_status
FROM tbl_menu
WHERE category_code = 4 OR menu_price = 9000 AND menu_code > 10;
4️⃣ BETWEEN
연산자
특정 범위 내 값을 찾을 때 사용합니다. BETWEEN A AND B
는 A <= 값 <= B
를 의미합니다.
SELECT menu_name, menu_price, category_code
FROM tbl_menu
WHERE menu_price BETWEEN 10000 AND 25000
ORDER BY menu_price;
🔁 NOT BETWEEN
SELECT menu_name, menu_price, category_code
FROM tbl_menu
WHERE menu_price NOT BETWEEN 10000 AND 25000
ORDER BY menu_price;
5️⃣ LIKE
연산자
문자열 검색에 사용합니다.
%문자열%
: 특정 문자열이 포함된 모든 값%문자열
: 특정 문자열로 끝나는 값문자열%
: 특정 문자열로 시작하는 값
SELECT menu_name, menu_price
FROM tbl_menu
WHERE menu_name LIKE '%마늘%'
ORDER BY menu_name;
SELECT menu_code, menu_name, menu_price, category_code, orderable_status
FROM tbl_menu
WHERE menu_price > 5000 AND category_code = 10 AND menu_name LIKE '%갈치%';
🔁 NOT LIKE
SELECT menu_name, menu_price
FROM tbl_menu
WHERE menu_name NOT LIKE '%마늘%'
ORDER BY menu_name;
6️⃣ IN
연산자
OR 조건을 간결하게 쓸 수 있는 문법입니다.
SELECT menu_name, category_code
FROM tbl_menu
WHERE category_code IN (4, 5, 6)
ORDER BY category_code;
🔁 NOT IN
SELECT menu_name, category_code
FROM tbl_menu
WHERE category_code NOT IN (4, 5, 6)
ORDER BY category_code;
7️⃣ IS NULL
연산자
NULL 값 여부를 확인할 때 사용합니다.
SELECT category_code, category_name, ref_category_code
FROM tbl_category
WHERE ref_category_code IS NULL;
🔁 IS NOT NULL
SELECT category_code, category_name, ref_category_code
FROM tbl_category
WHERE ref_category_code IS NOT NULL;
📎 참고 자료
'Database' 카테고리의 다른 글
[Database] DISTINCT (0) | 2025.05.18 |
---|---|
[Database] ORDER_BY (0) | 2025.05.18 |
[Database] SELECT (0) | 2025.05.18 |
[Database] 백업 및 복원 (0) | 2025.05.18 |
[Database] TRIGGER (0) | 2025.03.24 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- requests 라이브러리
- 조건문
- mysql 실습
- mysql 분석 쿼리
- select 결과 제어
- 파이썬
- 집합 연산
- 행 제한
- sql 쿼리 최적화
- database
- 파생 테이블
- sql 다중 테이블
- 데이터베이스
- 데이터 조회 최적화
- SQL
- sql 조작문
- 파이썬 크롤러
- sql 그룹화
- Python
- 회고록
- MySQL
- 고유 값
- sql 쿼리 합치기
- 중첩 쿼리
- 다중 열 distinct
- 카테고리별 합계
- google i/o 2025
- api 크롤링
- replace
- sql 고급
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함