본문 바로가기
sqld

SELECT와 WHERE절

by 자격증원톱 2026. 2. 23.
반응형

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은 조건을 붙이기 편한 실무 팁
반응형

'sqld' 카테고리의 다른 글

JOIN 이해하기  (0) 2026.02.23
집계함수와 group by절  (0) 2026.02.23
SQL 함수에 대해 알아봅시다!  (0) 2026.02.23
SELECT 문  (0) 2026.02.23
본질식별자 vs 인조식별자 정의  (0) 2026.02.21