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.
WHERE과 SELECT를 동시에 사용
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: 점수에 따라 성적 등급 출력