MSSQL WHERE 절 완벽 가이드, 조건 설정으로 원하는 데이터만 필터링
📌 SQL WHERE 조건절 사용법과 비교·논리 연산자 실전 예제
데이터베이스에서 필요한 데이터만 골라서 보고 싶을 때 가장 많이 사용하는 기능이 바로 WHERE 조건절입니다.
MSSQL에서 WHERE 절은 SELECT, UPDATE, DELETE 등 여러 명령문과 함께 사용되며, 조건에 맞는 행만 필터링해 줍니다.
즉, 수많은 데이터 중에서 내가 원하는 정보만 뽑아낼 수 있는 강력한 도구인 셈이죠.
WHERE 절에서는 비교 연산자(=, <>, >, <, >=, <=)와 논리 연산자(AND, OR, NOT)를 조합해 더욱 정밀하게 조건을 설정할 수 있습니다.
예를 들어, 나이가 30세 이상이면서 서울에 거주하는 고객만 추출하거나, 특정 범위나 패턴에 맞는 데이터를 선택하는 식입니다.
이 글에서는 WHERE 절의 기본 구조부터 다양한 연산자 활용, 그리고 실무에서 자주 쓰이는 필터링 기법까지 차근차근 살펴보겠습니다.
📋 목차
🔗 WHERE 절의 기본 구조 이해하기
MSSQL에서 WHERE 절은 SELECT, UPDATE, DELETE 구문과 함께 사용되어 조건에 맞는 데이터만 필터링하는 역할을 합니다.
WHERE 절을 통해 수많은 데이터 중 특정 조건을 만족하는 행만 골라낼 수 있습니다.
WHERE 절을 사용하는 기본 문법은 다음과 같습니다.
SELECT 컬럼명
FROM 테이블명
WHERE 조건;
예를 들어, 고객 테이블에서 주소가 ‘서울’인 고객만 조회하고 싶다면 다음과 같이 작성합니다.
SELECT 고객명, 주소
FROM 고객
WHERE 주소 = '서울';
💎 핵심 포인트:
WHERE 절은 결과 집합을 줄여 성능 향상에 도움을 줍니다. 또한 조건을 세밀하게 조합하면 원하는 데이터만 정확하게 추출할 수 있습니다.
WHERE 절은 단일 조건뿐 아니라 복수 조건, 범위, 목록, 패턴 매칭 등 다양한 방식으로 활용할 수 있습니다.
다음 단계에서는 WHERE 절에서 자주 사용하는 비교 연산자와 논리 연산자를 살펴보겠습니다.
🛠️ 비교 연산자 사용법 (=, <>, > 등)
WHERE 절에서 비교 연산자는 특정 컬럼 값과 다른 값 또는 표현식을 비교해 조건을 설정하는 데 사용됩니다.
MSSQL에서 자주 쓰이는 비교 연산자는 다음과 같습니다.
| 연산자 | 설명 | 예시 |
|---|---|---|
| = | 값이 동일한 경우 | WHERE 나이 = 30 |
| <> | 값이 다른 경우 | WHERE 도시 <> ‘서울’ |
| > | 값이 큰 경우 | WHERE 급여 > 5000 |
| < | 값이 작은 경우 | WHERE 재고 < 100 |
| >= | 값이 크거나 같은 경우 | WHERE 나이 >= 18 |
| <= | 값이 작거나 같은 경우 | WHERE 가격 <= 10000 |
예를 들어, 급여가 5,000 이상인 직원만 조회하려면 다음과 같이 작성합니다.
SELECT 이름, 급여
FROM 직원
WHERE 급여 >= 5000;
⚠️ 주의: 문자열 비교 시 기본적으로 MSSQL은 대소문자를 구분하지 않지만, 데이터베이스 정렬 설정에 따라 달라질 수 있으니 주의해야 합니다.
⚙️ 논리 연산자 AND, OR, NOT 조합하기
WHERE 절에서 논리 연산자는 여러 조건을 결합하거나 제외하는 데 사용됩니다.
대표적으로 AND, OR, NOT이 있으며, 이를 적절히 조합하면 복잡한 조건도 간단하게 표현할 수 있습니다.
🔗 AND 연산자
AND는 모든 조건을 동시에 만족하는 데이터를 조회합니다.
예를 들어, 나이가 30세 이상이면서 서울에 거주하는 고객을 조회하려면 다음과 같이 작성합니다.
SELECT 이름, 나이, 주소
FROM 고객
WHERE 나이 >= 30 AND 주소 = '서울';
🔀 OR 연산자
OR은 조건 중 하나라도 만족하면 데이터를 반환합니다.
예를 들어, 주소가 서울이거나 부산인 고객을 조회하려면 다음과 같이 작성합니다.
SELECT 이름, 주소
FROM 고객
WHERE 주소 = '서울' OR 주소 = '부산';
🚫 NOT 연산자
NOT은 조건을 반대로 적용하여 해당 조건에 맞지 않는 데이터를 반환합니다.
예를 들어, 서울에 거주하지 않는 고객을 조회하려면 다음과 같이 작성합니다.
SELECT 이름, 주소
FROM 고객
WHERE NOT 주소 = '서울';
💎 핵심 포인트:
논리 연산자는 복잡한 조건을 단순화하는 데 매우 유용합니다. 괄호를 사용하면 조건의 우선순위를 명확하게 지정할 수 있습니다.
🔌 범위와 목록 필터링 (BETWEEN, IN)
WHERE 절에서는 범위나 특정 목록에 포함된 데이터를 쉽게 조회할 수 있는 연산자를 제공합니다.
그중 대표적인 것이 BETWEEN과 IN입니다.
📏 BETWEEN으로 범위 지정
BETWEEN은 특정 범위에 속하는 데이터를 조회합니다.
숫자, 날짜, 문자 데이터 모두 사용할 수 있으며, 범위의 시작과 끝 값을 포함합니다.
-- 나이가 20세 이상 30세 이하인 고객
SELECT 이름, 나이
FROM 고객
WHERE 나이 BETWEEN 20 AND 30;
📋 IN으로 목록 지정
IN은 지정한 값 목록 중 하나라도 일치하는 데이터를 반환합니다.
다수의 OR 조건을 간결하게 작성할 수 있는 장점이 있습니다.
-- 서울, 부산, 대구에 거주하는 고객
SELECT 이름, 주소
FROM 고객
WHERE 주소 IN ('서울', '부산', '대구');
💎 핵심 포인트:
BETWEEN과 IN은 가독성을 높이고, 조건 작성 시간을 줄여줍니다. 단, BETWEEN은 범위의 시작과 끝을 모두 포함한다는 점을 기억하세요.
💡 패턴 매칭과 NULL 값 처리
WHERE 절은 패턴 매칭을 통해 특정 문자열을 포함하거나, 특정 규칙에 맞는 데이터를 검색할 수 있습니다.
또한 데이터베이스에서 자주 발생하는 NULL 값을 처리하는 방법도 함께 알아두면 좋습니다.
🔍 LIKE로 패턴 매칭
LIKE 연산자는 와일드카드 문자와 함께 사용하여 특정 패턴에 맞는 문자열을 검색합니다.
-- 이름이 '김'으로 시작하는 고객
SELECT 이름
FROM 고객
WHERE 이름 LIKE '김%';
-- '전자'로 끝나는 상품명
SELECT 상품명
FROM 상품
WHERE 상품명 LIKE '%전자';
🚫 NULL 값 처리
NULL 값은 “값이 없음”을 의미하며, 비교 연산자(=, <>)로는 비교할 수 없습니다.
NULL 여부를 확인하려면 IS NULL 또는 IS NOT NULL을 사용합니다.
-- 이메일 정보가 없는 고객
SELECT 이름
FROM 고객
WHERE 이메일 IS NULL;
-- 이메일 정보가 있는 고객
SELECT 이름
FROM 고객
WHERE 이메일 IS NOT NULL;
💎 핵심 포인트:
LIKE는 부분 검색에 강력하지만, 인덱스 효율이 떨어질 수 있으니 대규모 데이터 검색 시 주의해야 합니다. NULL 비교는 IS NULL, IS NOT NULL만 사용 가능하다는 점을 꼭 기억하세요.
❓ 자주 묻는 질문 (FAQ)
WHERE 절에서 대소문자를 구분하나요?
WHERE 절에서 문자열 비교 시 따옴표는 꼭 필요한가요?
NULL 값 비교 시 = 연산자를 사용할 수 없나요?
BETWEEN과 AND 조건의 차이는 무엇인가요?
LIKE 검색 시 % 와일드카드의 위치에 따라 결과가 다른가요?
IN 목록에 같은 값을 중복 입력하면 어떻게 되나요?
NOT 연산자와 <> 연산자의 차이는 무엇인가요?
WHERE 절을 더 빠르게 실행하려면 어떻게 해야 하나요?
📌 MSSQL WHERE 조건절 핵심 요약
MSSQL의 WHERE 조건절은 원하는 데이터만 정확하게 조회하기 위해 반드시 알아야 할 필수 구문입니다.
비교 연산자(=, <>, > 등)와 논리 연산자(AND, OR, NOT)를 적절히 조합하면 복잡한 조건도 간단하게 표현할 수 있으며, BETWEEN, IN, LIKE, IS NULL 등을 통해 범위 검색, 목록 조회, 패턴 매칭, NULL 값 처리까지 다양하게 활용 가능합니다.
성능을 위해 불필요한 조건은 줄이고, 인덱스 활용을 최적화하면 대규모 데이터에서도 빠르게 결과를 얻을 수 있습니다.
WHERE 절을 잘 이해하면 단순 데이터 조회를 넘어 분석과 보고서 작성에도 큰 도움이 되며, SQL 실무 역량 향상에 핵심적인 역할을 합니다.
🏷️ 관련 태그 : MSSQL, SQL기초, WHERE절, 데이터필터링, 비교연산자, 논리연산자, BETWEEN, IN, LIKE, NULL처리