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;

🧠 ANDOR보다 우선순위가 높습니다. 순서를 명확히 하려면 괄호를 사용하세요.

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 BA <= 값 <= 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;

📎 참고 자료