데이터베이스 검색, SQL WHERE 절에서 다중 조건 사용하는 방법

이터를 원하는 대로 추출하고 분석하는 능력, 데이터 전문가의 필수 역량이죠. 그 중심에는 바로 SQL WHERE 절이 있습니다. 특정 조건에 부합하는 데이터만 쏙쏙 골라내는 WHERE 절은 데이터베이스 작업의 핵심이라고 할 수 있습니다. 하지만 조건이 복잡해질수록 쿼리 작성에 어려움을 느끼는 분들이 많을 텐데요. 저 또한 AND, OR 연산자를 처음 사용할 때 원치 않는 결과를 얻어 당황했던 경험이 있습니다. 그래서 오늘은 복잡한 조건도 문제없이 처리할 수 있도록, SQL WHERE 절의 모든 것을 쉽게 풀어보겠습니다. 핵심은 효율적인 조건 설정쿼리 성능 최적화입니다.

SQL WHERE 절에서 다중 조건 사용

조건문의 기초: SQL WHERE 절 이렇게 시작하세요!

가장 기본적인 WHERE 절 사용법부터 알아볼까요? SELECT 구문과 함께 사용되어 특정 조건을 만족하는 행만을 결과로 반환합니다.

예시: 서울에 거주하는 고객의 이름과 연락처를 조회하고 싶을 때

SQL

SELECT 이름, 연락처
FROM 고객
WHERE 거주지역 = '서울';

WHERE 거주지역 = '서울' 이 부분이 바로 WHERE 절입니다. 고객 테이블에서 거주지역 컬럼의 값이 ‘서울’인 행만 선택하겠다는 의미죠. 간단하지만 강력한 기능이니 꼭 기억하세요.

SQL WHERE 절에서 다중 조건 사용-1

복잡한 조건도 문제없다! AND와 OR 연산자의 마법

실무에서는 여러 조건을 동시에 만족하거나, 여러 조건 중 하나라도 만족하는 데이터를 찾아야 하는 경우가 많습니다. 이때 ANDOR 연산자가 빛을 발합니다.

  • AND: 모든 조건을 만족해야 합니다. (마치 ‘그리고’ 와 같아요)
  • OR: 조건 중 하나 이상을 만족하면 됩니다. (마치 ‘또는’ 과 같아요)

예시 1: 서울에 거주하면서 VIP 고객인 사람 찾기 (AND 사용)

SQL

SELECT 고객명
FROM 고객
WHERE 거주지역 = '서울' AND 등급 = 'VIP';

예시 2: 구매 금액이 10만 원 이상이거나 가입 기간이 3년 이상인 고객 찾기 (OR 사용)

SQL

SELECT 고객명
FROM 고객
WHERE 구매액 >= 100000 OR 가입기간 >= 3;

주의! AND와 OR를 함께 사용할 때는 괄호가 필수!

AND와 OR를 혼합해서 사용할 경우, 연산자 우선순위에 따라 쿼리 결과가 달라질 수 있습니다. 따라서 괄호 ()를 사용하여 어떤 조건을 먼저 평가할지 명확하게 지정해야 합니다.

예시: (조건1 AND 조건2) OR 조건3 // 조건1과 조건2를 모두 만족하거나 조건3을 만족하는 경우

SQL WHERE 절에서 다중 조건 사용-2

깔끔한 코드를 위한 꿀팁! IN과 BETWEEN 활용

여러 개의 OR 조건을 한 번에! IN 연산자

특정 컬럼의 값이 여러 값 중 하나와 일치하는 경우를 찾을 때, OR 연산자를 여러 번 사용하는 대신 IN 연산자를 사용하면 코드를 훨씬 간결하게 만들 수 있습니다.

예시: 담당자가 김대리, 박주임, 이사원 중 한 명인 경우

SQL

SELECT *
FROM 업무보고
WHERE 담당자 IN ('김대리', '박주임', '이사원');

숫자와 날짜 범위 검색에 최적화! BETWEEN 연산자

특정 범위 내에 있는 값을 찾을 때는 BETWEEN 연산자가 유용합니다. 숫자뿐만 아니라 날짜 데이터에도 적용 가능하며, 시작 값과 끝 값을 포함하는 범위 검색입니다.

예시: 가격이 3만 원에서 7만 원 사이인 상품 검색

SQL

SELECT 상품명
FROM 상품
WHERE 가격 BETWEEN 30000 AND 70000;

NULL 값 어떻게 처리해야 할까요? IS NULL과 IS NOT NULL

데이터를 다루다 보면 값이 없는 경우, 즉 NULL 값을 마주하게 됩니다. NULL 값은 일반적인 비교 연산자(=, !=)로 비교할 수 없습니다. NULL 값을 확인하기 위해서는 특별한 연산자인 IS NULLIS NOT NULL을 사용해야 합니다.

  • IS NULL: 해당 컬럼의 값이 NULL인 경우를 찾습니다.
  • IS NOT NULL: 해당 컬럼의 값이 NULL이 아닌 경우를 찾습니다.

예시: 연락처 정보가 없는 고객 검색

SQL

SELECT 이름
FROM 고객
WHERE 연락처 IS NULL;

SQL WHERE 절에서 다중 조건 사용-3

쿼리 속도 향상을 위한 WHERE 절 팁

WHERE 절에 다양한 조건을 추가하는 것은 데이터를 정교하게 필터링하는 데 도움이 되지만, 데이터 양이 많아질수록 쿼리 실행 속도에 영향을 미칠 수 있습니다. 효율적인 쿼리 작성을 위해서는 다음 사항들을 고려해야 합니다.

  • 인덱스 활용: WHERE 절에서 자주 사용되는 컬럼에는 인덱스를 생성하여 검색 속도를 향상시킬 수 있습니다.
  • 함수 사용 최소화: WHERE 절에서 컬럼 값에 함수를 적용하여 비교하는 것은 인덱스 활용을 어렵게 만들 수 있습니다. 가능한 한 컬럼 자체와 상수를 비교하는 것이 좋습니다.
  • 정확한 데이터 타입 비교: 비교하는 컬럼과 값의 데이터 타입을 일치시키는 것이 성능 향상에 도움이 됩니다.

마무리하며

오늘 포스팅에서는 SQL WHERE 절을 활용하여 원하는 데이터를 효율적으로 추출하는 방법에 대해 자세히 알아보았습니다. 기본적인 사용법부터 AND, OR 연산자를 활용한 다중 조건 처리, IN과 BETWEEN을 이용한 간결한 코드 작성, NULL 값 처리 방법, 그리고 쿼리 성능 향상을 위한 팁까지!

이 모든 내용을 숙지하고 꾸준히 연습한다면 여러분도 데이터베이스를 자유자재로 다루는 전문가가 될 수 있을 겁니다. 복잡한 데이터 속에서 원하는 정보만 쏙쏙 뽑아내는 능력, 이제 여러분의 것으로 만들어보세요. 더 많은 정보와 예제가 필요하다면 W3Schools SQL WHERE 절과 같은 자료를 참고하시는 것도 좋은 방법입니다.

자주 묻는 질문

AND랑 OR 같이 쓸 때 괄호는 꼭 써야 하나요? 안 쓰면 어떻게 되는데요?

네, 가급적 꼭 쓰시는 게 좋습니다. 괄호를 쓰지 않으면 데이터베이스 시스템이 정해진 우선순위(보통 AND가 OR보다 먼저 계산됩니다)에 따라 처리하는데, 이게 내가 생각한 순서와 다를 수 있거든요. 예를 들어 ‘A조건 이거나 B조건 이면서 C조건’을 원했는데, 괄호 없이 쓰면 ‘A조건 이거나 (B조건 이면서 C조건)’으로 해석될 수도 있고, 시스템에 따라서는 ‘(A조건 이거나 B조건) 이면서 C조건’으로 해석될 수도 있어요. 예상치 못한 결과를 피하려면 귀찮더라도 괄호로 명확하게 묶어주는 것이 안전합니다.

값이 비어있는 NULL이랑 그냥 빈 문자열(”)은 같은 건가요? 다르게 처리해야 하나요?

전혀 다릅니다! NULL은 ‘값이 존재하지 않음’ 또는 ‘알 수 없음’을 의미하는 특별한 상태이고, 빈 문자열(”)은 길이가 0인 문자열 데이터, 즉 ‘값이 있지만 비어있음’을 의미해요. 따라서 검색할 때도 다르게 처리해야 합니다. NULL인 데이터를 찾으려면 WHERE 컬럼명 IS NULL을 사용해야 하고, 빈 문자열인 데이터를 찾으려면 WHERE 컬럼명 = '' 와 같이 일반 비교 연산자를 사용해야 합니다. 이 둘을 혼동하면 원하는 데이터를 놓칠 수 있으니 주의해야 해요.

SQL WHERE 절에서 다중 조건 사용하는 방법 말고 단일 조건만 쓸 때도 성능을 신경 써야 하나요?

네, 그럼요! 물론 조건이 복잡할수록 성능에 미치는 영향이 크지만, 단일 조건이라도 어떻게 작성하느냐에 따라 성능 차이가 날 수 있습니다. 예를 들어 인덱스가 걸린 컬럼을 조건으로 사용하더라도, 해당 컬럼에 함수를 적용해서 비교하면(예: WHERE SUBSTR(날짜컬럼, 1, 4) = '2023') 인덱스를 제대로 활용하지 못할 수 있어요. 가능하면 인덱스 컬럼 자체를 그대로 비교하는 방식(예: WHERE 날짜컬럼 >= '2023-01-01' AND 날짜컬럼 < '2024-01-01')으로 작성하는 것이 좋습니다. 데이터 양이 적을 때는 큰 차이가 없지만, 데이터가 많아지면 이런 작은 차이가 큰 성능 저하로 이어질 수 있으니 항상 신경 쓰는 습관을 들이는 게 좋습니다.

Leave a Comment

error: Content is protected !!