sqld
SELECT와 WHERE절
자격증원톱
2026. 2. 23. 13:06
반응형
SELECT와 WHERE절
반응형

1) WHERE 절이란?
- SELECT로 가져온 행들 중에서 조건에 맞는 행만 골라내는 필터입니다.
- 데이터가 많을수록 WHERE로 줄여서 가져와야 성능과 정확성이 좋아집니다.
✅ 기본 형태
SELECT 컬럼들
FROM 테이블
WHERE 조건;
예시
“급여가 2000 초과이고 부서가 10인 사원만”
SELECT *
FROM EMP
WHERE SAL > 2000
AND DEPTNO = 10;
2) WHERE에서 쓰는 연산자 종류
(1) 비교 연산자
- =, <>(또는 !=), >, <, >=, <=
예) 급여가 3000인 사람
SELECT ENAME, SAL
FROM EMP
WHERE SAL = 3000;
(2) 범위/목록/패턴
- BETWEEN a AND b : a~b 사이(포함)
- IN (list) : 목록 중 하나
- LIKE '패턴' : 문자열 패턴 검색
예) 급여 1500~3000
WHERE SAL BETWEEN 1500 AND 3000
예) 부서가 10,20,30 중 하나
WHERE DEPTNO IN (10, 20, 30)
예) 이름이 S로 시작
WHERE ENAME LIKE 'S%'
- % = 글자 수 상관없이 여러 글자
- _ = 정확히 한 글자
예) 두 번째 글자가 A인 이름
WHERE ENAME LIKE '_A%'
(3) NULL 관련
- IS NULL, IS NOT NULL
※ = NULL은 안 씁니다.
예) 커미션이 NULL인 사원
WHERE COMM IS NULL
(4) 부정(반대 조건)
- NOT, NOT BETWEEN, NOT IN, NOT LIKE
예) 부서가 20이 아닌 사람
WHERE DEPTNO <> 20
3) AND / OR / NOT (논리 연산자)
- AND: 둘 다 참이어야 선택
- OR: 하나라도 참이면 선택
- NOT: 조건을 반대로 뒤집음
예) 급여가 2000 초과 그리고 직무가 MANAGER
WHERE SAL > 2000 AND JOB = 'MANAGER'
예) 급여가 2000 초과 또는 부서가 20
WHERE SAL > 2000 OR DEPTNO = 20
4) 우선순위(중요) + 괄호
이미지 요지: NOT → AND → OR 순서로 먼저 계산됩니다.
그리고 괄호가 최우선입니다.
예시: 괄호가 없으면 결과가 달라짐
-- (A AND B) OR C 로 해석됨(AND가 먼저)
WHERE SAL > 2000 AND DEPTNO = 10 OR JOB = 'CLERK';
“진짜 의도”가
- SAL > 2000 이면서 (DEPTNO=10 또는 JOB='CLERK') 라면
WHERE SAL > 2000
AND (DEPTNO = 10 OR JOB = 'CLERK');
✅ 결론: OR가 섞이면 괄호로 의도를 고정하는 게 안전합니다.
5) LIKE에서 “%”나 “_”를 글자 그대로 찾고 싶을 때: ESCAPE
- %와 _는 와일드카드라서 그냥 쓰면 “패턴”으로 동작합니다.
- 실제로 “%” 문자가 들어간 데이터를 찾으려면 ESCAPE를 씁니다.
예시: 이름에 A%_LLEN 같은 문자가 “그대로 들어간 행” 찾기
WHERE ENAME LIKE 'A\%\_LLEN' ESCAPE '\'
- \% : %를 문자로 취급
- \_ : _를 문자로 취급
6) WHERE 1=1을 왜 쓰나?
- WHERE 1=1은 항상 참이라 결과엔 영향이 없습니다.
- 대신 동적으로 조건을 붙일 때 편합니다.
예)
WHERE 1=1
AND SAL >= 2000
AND JOB = 'MANAGER'
AND ENAME = 'JONES'
→ 조건을 추가/제거할 때 AND만 붙이면 돼서 관리가 쉬움.
초간단 요약
- WHERE = 조건 필터
- 자주 쓰는 조건: 비교(=, >), 범위(BETWEEN), 목록(IN), 패턴(LIKE), NULL(IS NULL)
- 논리 연산 우선순위: 괄호 > NOT > AND > OR
- LIKE에서 %, _를 문자로 찾으면 ESCAPE
- WHERE 1=1은 조건을 붙이기 편한 실무 팁
반응형