메뉴 닫기

MSSQL WHERE 절 완벽 가이드, 조건 설정으로 원하는 데이터만 필터링

MSSQL WHERE 절 완벽 가이드, 조건 설정으로 원하는 데이터만 필터링

📌 SQL WHERE 조건절 사용법과 비교·논리 연산자 실전 예제

데이터베이스에서 필요한 데이터만 골라서 보고 싶을 때 가장 많이 사용하는 기능이 바로 WHERE 조건절입니다.
MSSQL에서 WHERE 절은 SELECT, UPDATE, DELETE 등 여러 명령문과 함께 사용되며, 조건에 맞는 행만 필터링해 줍니다.
즉, 수많은 데이터 중에서 내가 원하는 정보만 뽑아낼 수 있는 강력한 도구인 셈이죠.

WHERE 절에서는 비교 연산자(=, <>, >, <, >=, <=)와 논리 연산자(AND, OR, NOT)를 조합해 더욱 정밀하게 조건을 설정할 수 있습니다.
예를 들어, 나이가 30세 이상이면서 서울에 거주하는 고객만 추출하거나, 특정 범위나 패턴에 맞는 데이터를 선택하는 식입니다.
이 글에서는 WHERE 절의 기본 구조부터 다양한 연산자 활용, 그리고 실무에서 자주 쓰이는 필터링 기법까지 차근차근 살펴보겠습니다.



🔗 WHERE 절의 기본 구조 이해하기

MSSQL에서 WHERE 절은 SELECT, UPDATE, DELETE 구문과 함께 사용되어 조건에 맞는 데이터만 필터링하는 역할을 합니다.
WHERE 절을 통해 수많은 데이터 중 특정 조건을 만족하는 행만 골라낼 수 있습니다.

WHERE 절을 사용하는 기본 문법은 다음과 같습니다.

CODE BLOCK
SELECT 컬럼명
FROM 테이블명
WHERE 조건;

예를 들어, 고객 테이블에서 주소가 ‘서울’인 고객만 조회하고 싶다면 다음과 같이 작성합니다.

CODE BLOCK
SELECT 고객명, 주소
FROM 고객
WHERE 주소 = '서울';

💎 핵심 포인트:
WHERE 절은 결과 집합을 줄여 성능 향상에 도움을 줍니다. 또한 조건을 세밀하게 조합하면 원하는 데이터만 정확하게 추출할 수 있습니다.

WHERE 절은 단일 조건뿐 아니라 복수 조건, 범위, 목록, 패턴 매칭 등 다양한 방식으로 활용할 수 있습니다.
다음 단계에서는 WHERE 절에서 자주 사용하는 비교 연산자논리 연산자를 살펴보겠습니다.

🛠️ 비교 연산자 사용법 (=, <>, > 등)

WHERE 절에서 비교 연산자는 특정 컬럼 값과 다른 값 또는 표현식을 비교해 조건을 설정하는 데 사용됩니다.
MSSQL에서 자주 쓰이는 비교 연산자는 다음과 같습니다.

연산자 설명 예시
= 값이 동일한 경우 WHERE 나이 = 30
<> 값이 다른 경우 WHERE 도시 <> ‘서울’
> 값이 큰 경우 WHERE 급여 > 5000
< 값이 작은 경우 WHERE 재고 < 100
>= 값이 크거나 같은 경우 WHERE 나이 >= 18
<= 값이 작거나 같은 경우 WHERE 가격 <= 10000

예를 들어, 급여가 5,000 이상인 직원만 조회하려면 다음과 같이 작성합니다.

CODE BLOCK
SELECT 이름, 급여
FROM 직원
WHERE 급여 >= 5000;

⚠️ 주의: 문자열 비교 시 기본적으로 MSSQL은 대소문자를 구분하지 않지만, 데이터베이스 정렬 설정에 따라 달라질 수 있으니 주의해야 합니다.



⚙️ 논리 연산자 AND, OR, NOT 조합하기

WHERE 절에서 논리 연산자는 여러 조건을 결합하거나 제외하는 데 사용됩니다.
대표적으로 AND, OR, NOT이 있으며, 이를 적절히 조합하면 복잡한 조건도 간단하게 표현할 수 있습니다.

🔗 AND 연산자

AND는 모든 조건을 동시에 만족하는 데이터를 조회합니다.
예를 들어, 나이가 30세 이상이면서 서울에 거주하는 고객을 조회하려면 다음과 같이 작성합니다.

CODE BLOCK
SELECT 이름, 나이, 주소
FROM 고객
WHERE 나이 >= 30 AND 주소 = '서울';

🔀 OR 연산자

OR은 조건 중 하나라도 만족하면 데이터를 반환합니다.
예를 들어, 주소가 서울이거나 부산인 고객을 조회하려면 다음과 같이 작성합니다.

CODE BLOCK
SELECT 이름, 주소
FROM 고객
WHERE 주소 = '서울' OR 주소 = '부산';

🚫 NOT 연산자

NOT은 조건을 반대로 적용하여 해당 조건에 맞지 않는 데이터를 반환합니다.
예를 들어, 서울에 거주하지 않는 고객을 조회하려면 다음과 같이 작성합니다.

CODE BLOCK
SELECT 이름, 주소
FROM 고객
WHERE NOT 주소 = '서울';

💎 핵심 포인트:
논리 연산자는 복잡한 조건을 단순화하는 데 매우 유용합니다. 괄호를 사용하면 조건의 우선순위를 명확하게 지정할 수 있습니다.

🔌 범위와 목록 필터링 (BETWEEN, IN)

WHERE 절에서는 범위나 특정 목록에 포함된 데이터를 쉽게 조회할 수 있는 연산자를 제공합니다.
그중 대표적인 것이 BETWEENIN입니다.

📏 BETWEEN으로 범위 지정

BETWEEN은 특정 범위에 속하는 데이터를 조회합니다.
숫자, 날짜, 문자 데이터 모두 사용할 수 있으며, 범위의 시작과 끝 값을 포함합니다.

CODE BLOCK
-- 나이가 20세 이상 30세 이하인 고객
SELECT 이름, 나이
FROM 고객
WHERE 나이 BETWEEN 20 AND 30;

📋 IN으로 목록 지정

IN은 지정한 값 목록 중 하나라도 일치하는 데이터를 반환합니다.
다수의 OR 조건을 간결하게 작성할 수 있는 장점이 있습니다.

CODE BLOCK
-- 서울, 부산, 대구에 거주하는 고객
SELECT 이름, 주소
FROM 고객
WHERE 주소 IN ('서울', '부산', '대구');

💎 핵심 포인트:
BETWEEN과 IN은 가독성을 높이고, 조건 작성 시간을 줄여줍니다. 단, BETWEEN은 범위의 시작과 끝을 모두 포함한다는 점을 기억하세요.



💡 패턴 매칭과 NULL 값 처리

WHERE 절은 패턴 매칭을 통해 특정 문자열을 포함하거나, 특정 규칙에 맞는 데이터를 검색할 수 있습니다.
또한 데이터베이스에서 자주 발생하는 NULL 값을 처리하는 방법도 함께 알아두면 좋습니다.

🔍 LIKE로 패턴 매칭

LIKE 연산자는 와일드카드 문자와 함께 사용하여 특정 패턴에 맞는 문자열을 검색합니다.

CODE BLOCK
-- 이름이 '김'으로 시작하는 고객
SELECT 이름
FROM 고객
WHERE 이름 LIKE '김%';

-- '전자'로 끝나는 상품명
SELECT 상품명
FROM 상품
WHERE 상품명 LIKE '%전자';

🚫 NULL 값 처리

NULL 값은 “값이 없음”을 의미하며, 비교 연산자(=, <>)로는 비교할 수 없습니다.
NULL 여부를 확인하려면 IS NULL 또는 IS NOT NULL을 사용합니다.

CODE BLOCK
-- 이메일 정보가 없는 고객
SELECT 이름
FROM 고객
WHERE 이메일 IS NULL;

-- 이메일 정보가 있는 고객
SELECT 이름
FROM 고객
WHERE 이메일 IS NOT NULL;

💎 핵심 포인트:
LIKE는 부분 검색에 강력하지만, 인덱스 효율이 떨어질 수 있으니 대규모 데이터 검색 시 주의해야 합니다. NULL 비교는 IS NULL, IS NOT NULL만 사용 가능하다는 점을 꼭 기억하세요.

자주 묻는 질문 (FAQ)

WHERE 절에서 대소문자를 구분하나요?
MSSQL은 기본적으로 대소문자를 구분하지 않지만, 데이터베이스나 컬럼의 정렬 규칙이 대소문자 구분(Case-sensitive)으로 설정되어 있다면 구분합니다.
WHERE 절에서 문자열 비교 시 따옴표는 꼭 필요한가요?
네. 문자열은 반드시 작은따옴표(‘ ‘)로 감싸야 하며, 그렇지 않으면 오류가 발생합니다.
NULL 값 비교 시 = 연산자를 사용할 수 없나요?
네. NULL 비교는 = 또는 <> 대신 IS NULL 또는 IS NOT NULL을 사용해야 합니다.
BETWEEN과 AND 조건의 차이는 무엇인가요?
기능적으로 동일하지만, BETWEEN은 시작과 끝 값을 모두 포함하며 가독성이 더 좋습니다.
LIKE 검색 시 % 와일드카드의 위치에 따라 결과가 다른가요?
네. 앞에 %가 오면 뒤쪽이 일치하는 값을, 뒤에 %가 오면 앞쪽이 일치하는 값을, 양쪽에 %가 있으면 해당 문자열을 포함하는 값을 찾습니다.
IN 목록에 같은 값을 중복 입력하면 어떻게 되나요?
중복된 값은 자동으로 무시되고, 중복 여부는 결과에 영향을 주지 않습니다.
NOT 연산자와 <> 연산자의 차이는 무엇인가요?
<>는 두 값이 같지 않은 경우를 의미하고, NOT은 조건 전체를 부정하는 역할을 합니다.
WHERE 절을 더 빠르게 실행하려면 어떻게 해야 하나요?
적절한 인덱스를 사용하고, 필요한 컬럼만 조회하며, 조건문을 최적화하면 실행 속도를 개선할 수 있습니다.

📌 MSSQL WHERE 조건절 핵심 요약

MSSQL의 WHERE 조건절은 원하는 데이터만 정확하게 조회하기 위해 반드시 알아야 할 필수 구문입니다.
비교 연산자(=, <>, > 등)와 논리 연산자(AND, OR, NOT)를 적절히 조합하면 복잡한 조건도 간단하게 표현할 수 있으며, BETWEEN, IN, LIKE, IS NULL 등을 통해 범위 검색, 목록 조회, 패턴 매칭, NULL 값 처리까지 다양하게 활용 가능합니다.
성능을 위해 불필요한 조건은 줄이고, 인덱스 활용을 최적화하면 대규모 데이터에서도 빠르게 결과를 얻을 수 있습니다.
WHERE 절을 잘 이해하면 단순 데이터 조회를 넘어 분석과 보고서 작성에도 큰 도움이 되며, SQL 실무 역량 향상에 핵심적인 역할을 합니다.


🏷️ 관련 태그 : MSSQL, SQL기초, WHERE절, 데이터필터링, 비교연산자, 논리연산자, BETWEEN, IN, LIKE, NULL처리