5️⃣

조건을 WHERE에 써야 하나요, SELECT 안에 써야 하나요?

4. 조건을 WHERE에 써야 하나요, SELECT 안에 써야 하나요?

위치
용도 설명
예시
어떤 경우 사용하나요? (질문)
답변 / 선택 기준
WHERE
테이블에서 조건 필터링조건에 맞지 않는 행(row)을 아예 제거함 → 결과에 포함되지 않음
WHERE score > 60
조건 불충족한 행을 없애고 싶을 때
WHERE 절에 조건을 씁니다.
SELECT
출력할 컬럼 처리남은 행에서 출력할 값이나 형식 계산/가공 → 출력 형태를 바꿈
SELECT IF(score > 60, 'Pass', 'Fail')SELECT CASE WHEN score > 60 THEN 'P' ELSE 'F' END
조건에 따라 표시되는 값을 다르게 하고 싶을 때
SELECT 절에 조건을 씁니다.(CASE, IF, 계산식 등) 등

헷갈릴 때 팁

데이터를 걸러내는 조건 = WHERE
데이터를 바꿔서 표현하는 조건 = SELECT 안에서 IF나 CASE 등의 계산식

 예시

1. WHERE에 조건 → 필터링 (행 삭제)
SELECT name, score FROM students WHERE score >= 60;
SQL
복사
결과: score가 60 미만인 학생은 결과에 안 나옴
2. SELECT에 조건 → 출력 내용 변경
SELECT name, CASE WHEN score >= 60 THEN 'Pass' ELSE 'Fail' END AS result FROM students;
SQL
복사
결과: 모든 학생이 나옴, 단 Pass/Fail로 값만 다름
목적
예시
어디에?
특정 조건을 만족하는 행만 출력하고 싶다
score >= 60인 학생만 보기
WHERE
모든 데이터를 보여주되 조건에 따라 결과를 다르게 표시하고 싶다
score 60 이상이면 Pass, 아니면 Fail
SELECT
계산식에 조건이 들어간다
weight가 500g 초과면 'Over', 아니면 'OK'
SELECT
특정 조건을 만족하는 행만 집계하고 싶다
남학생 수만 세기
WHERE 또는 SUM(CASE WHEN ...)
3.
WHERESELECT를 동시에 사용
SELECT name, CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' ELSE 'C' END AS grade FROM students WHERE gender = 'F';
SQL
복사
WHERE: 여학생만 필터링
SELECT: 점수에 따라 성적 등급 출력