Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

SQL WHERE 절 완벽 가이드: 조건에 맞는 데이터만 골라내기

SQL WHERE 절은 명령문이 반환하거나 영향을 미치는 레코드의 범위를 제한하는 역할을 합니다. SELECT, UPDATE, DELETE 문과 함께 사용되며, AND 키워드를 활용하면 여러 개의 조건을 동시에 지정할 수도 있습니다.

쿼리 결과에서 특정 조건에 맞는 데이터만 추출하고 싶은 경우가 자주 있습니다. 예를 들어 '영업 관리자' 직급을 가진 직원 목록을 조회하거나, 특정 날짜 이후에 입사한 직원이 누구인지 찾아야 할 수 있습니다.

이럴 때 WHERE 절을 사용하면 SQL 명령 실행 시 원하는 레코드만 필터링할 수 있습니다. 이 글에서는 WHERE 절을 활용해 SQL에서 레코드를 필터링하는 방법을 예제와 함께 자세히 살펴보겠습니다.

SQL WHERE 절이란?

SQL WHERE 절은 특정 조건 또는 조건 집합을 만족하는 레코드만 걸러내는 기능을 합니다. WHERE 절은 SQL 문장에서 FROM 절 뒤에 위치합니다.

기본 문법은 다음과 같습니다:

SELECT * FROM table WHERE column comparison value;

'SELECT * FROM table'은 표준 SELECT 쿼리입니다. 여기에 WHERE 문을 추가하면 쿼리가 반환하는 레코드를 제한할 수 있습니다. 'column'은 조건을 적용할 열을 의미하며, 'comparison'과 'value'는 각각 비교 연산자와 비교 대상 값을 나타냅니다.

사용할 수 있는 비교 조건의 예는 다음과 같습니다:

WHERE name = 'Jeff';
WHERE age > 15;
WHERE salary < 50000;

AND 키워드를 사용하면 여러 조건을 하나의 WHERE 절에 결합할 수 있습니다:

SELECT * FROM table 
WHERE column1 comparison1 value1
AND column2 comparison2 value2;

그럼 실제 예제를 통해 WHERE 문의 사용법을 단계별로 알아보겠습니다.

SQL WHERE 예제: SELECT 문

직급이 'Senior Sales Associate(선임 영업 사원)'인 직원 목록을 조회하고 싶다고 가정해 보겠습니다. 이때 다음과 같은 SQL SELECT 문을 사용할 수 있습니다:

SELECT name, title FROM employees 
WHERE title = 'Senior Sales Associate';

쿼리를 실행하면 조건을 만족하는 다음 행들이 반환됩니다:

 name  |      title          
-------+----------------------
 Geoff | Senior Sales Associate
 Adam  | Senior Sales Associate
(2 rows)

결과에 포함된 모든 직원의 직급이 'Senior Sales Associate'인 것을 확인할 수 있습니다.

다른 예제도 살펴보겠습니다. 연봉이 35,000달러를 초과하면서 이름이 'Adam'이 아닌 모든 직원 목록을 조회한다고 해봅시다. 이 경우 다음 SQL 문을 사용합니다:

SELECT name, salary FROM employees 
WHERE salary > 35000 AND name <> 'Adam';

쿼리 결과는 다음과 같습니다:

 name  | salary
-------+--------
 Geoff |  38000
 Emma  |  50000
 Jonah |  50000
(3 rows)

여기서 <> 연산자는 '같지 않음'을 의미합니다. Adam은 연봉이 35,000달러를 넘지만, 이름 제외 조건 때문에 결과에서 빠지게 됩니다.

WHERE 절과 UPDATE, DELETE 문

SQL WHERE 절은 UPDATE 문과 DELETE 문에서도 활용할 수 있습니다.

UPDATE 문에서의 활용

예를 들어 회사 구조조정으로 인해 직원들의 지점(branch) 정보를 변경해야 한다고 가정해 보겠습니다. 이런 작업은 UPDATE 문으로 처리할 수 있습니다.

Luke의 소속 지점을 새 사무실이 있는 'Boston'에서 'Cambridge'로 변경하고 싶다면 다음과 같은 SQL UPDATE 문을 사용하면 됩니다:

UPDATE employees SET branch = 'Cambridge' 
WHERE name = 'Luke';

변경 후 Luke의 지점 정보를 조회하면 다음과 같은 결과가 나타납니다:

 name |  branch   
------+-----------
 Luke | Cambridge
(1 row)

DELETE 문에서의 활용

WHERE 절은 SQL DELETE 명령과도 함께 사용할 수 있습니다.

폐쇄된 Albany 지점에서 근무하는 모든 직원의 레코드를 삭제하고 싶다면 다음 명령을 실행하면 됩니다:

DELETE FROM employees WHERE branch = 'Albany';

삭제 후 전체 직원 목록을 조회하면 반환되는 행의 수가 8개가 아닌 6개로 줄어든 것을 확인할 수 있습니다:

  name  |    branch     
--------+---------------
 Mike   | Stamford
 Hannah | San Francisco
 Geoff  | San Francisco
 Alexis | Boston
 Adam   | Sacramento
 Luke   | Cambridge
(6 rows)

SQL WHERE 절에서 사용하는 연산자

SQL WHERE 절은 논리 연산자를 사용해 레코드를 필터링합니다. 앞선 첫 번째 예제에서는 '같음(=)' 연산자를 사용해 선임 영업 사원의 이름을 확인했습니다.

WHERE 절과 함께 사용할 수 있는 주요 논리 연산자는 다음과 같습니다:

연산자설명예제
=같음WHERE name = 'Jake'
>보다 큼age > 20
<보다 작음age < 20
>=크거나 같음salary >= 50000
<=작거나 같음salary <= 40000
LIKE패턴 매칭name LIKE 'Jo%'
IN목록 내 일치하는 값이 있는지 확인title IN ('Sales Associate', 'Director of Sales')
BETWEEN특정 값이 지정한 범위 안에 속하는지 확인employee_month_awards BETWEEN 1 AND 5

마치며

SQL WHERE 절은 명령문의 영향을 받는 레코드를 필터링하는 강력한 도구입니다. SELECT, UPDATE, DELETE 문 어디에서나 사용할 수 있으며, AND 키워드로 여러 조건을 조합할 수 있습니다. 단, WHERE 키워드 자체는 한 번만 작성하면 됩니다.

이번 튜토리얼에서는 WHERE 절의 기본 문법과 SELECT 문에서의 활용법, 그리고 UPDATE 및 DELETE 작업에서의 사용 방법을 살펴보았습니다. 또한 WHERE 절과 함께 사용할 수 있는 다양한 조건 연산자들도 정리했습니다.

전문 SQL 개발자가 되는 것이 목표라면, 검증된 학습 로드맵을 따라가는 것이 좋습니다. 공식 문서, 온라인 강의, 실습 프로젝트를 병행하면 WHERE 절을 비롯한 SQL 핵심 개념을 더욱 탄탄하게 익힐 수 있습니다.