Database
[Database] WHERE
daze1002
2025. 5. 18. 21:38
반응형
🎯 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;