[MS SQL Server] #6_SELECT문에 WHERE절 사용하기
안녕하세요. 문범우입니다.
지난 글에서 기초적인 SELECT문을 통해 데이터를 조회하는 방법에 대해서 알아보았습니다.
이번 포스팅에서는 SELECT문에 WHERE절을 추가하여 특정 조건에 부합하는 데이터들만 조회하는 방법에 대해서 알아보도록 하겠습니다.
데이터베이스 및 테이블들은 지난 글에서 만든 샘플데이터를 그대로 이용합니다. 해당 샘플 데이터가 없는 분들은 아래 글에서 쿼리를 통해 샘플데이터를 생성하고 진행해주세요.
1. WHERE문 기초
먼저 아래와 같은 기본 SELECT문을 통해서 employee 테이블의 모든 데이터를 조회해보도록 합시다.
SELECT * FROM employee;
그런데 만약 위와 같이 모든 정보를 얻고 싶은 것이 아니라, job의 값이 '사원'인 데이터에 대해서만 조회하고 싶을 때는 어떻게 할까요?
또는 salary가 500 이상인 데이터만 조회하고 싶을 때는 어떻게 해야 할까요?
이와 같이 테이블에서 특정 조건에 부합하는 데이터만 조회하고 싶을 때 사용하는 것이 WHERE절 입니다.
그럼 바로 WHERE절을 사용해보도록 합시다.
먼저 job이 사원인 데이터만 조회하는 쿼리는 다음과 같습니다.
SELECT * FROM employee
WHERE job = '사원';
위의 결과와 같이 job이 '사원'인 데이터만 조회되었습니다.
그럼 같은 방법으로 salary가 500 이상인 데이터도 조회해보도록 합시다.
SELECT * FROM employee
WHERE salary >= 500;
위와 같이 salary가 500이상인 데이터만 조회되었습니다.
WHERE 절에서 사용되는 기본적인 연산자는 다음과 같습니다.
대소를 비교할 때 사용되는 >, <, >=, <= 와 같은 것들이 있으며,
같음을 나타내는 = 와 서로 다름을 나타내는 != 또는 <>이 있습니다.
그런데 여러개의 조건을 함께 사용해야 하는 경우는 어떻게 해야할까요?
2. 논리연산자(and / or)의 사용
여러개의 조건을 함께 사용해야 한다는 것은 다음과 같은 상황일 것 입니다.
'사장' 직급이 아니면서, salary가 500 이상인 데이터에 대해서 조회하시오. 또는
commission을 포함한 연봉이 5500만원 이하이거나 '사원' 직급인 데이터를 조회하시오.
이러한 경우는 어떻게 할까요?
바로 여러개의 조건을 동시에 사용하면 되는데, 이럴 때 사용하는 것이 논리 연산자 입니다.
and 논리 연산자는 좌,우측의 조건을 동시에 만족해야 할 때 사용되며,
or 논리 연산자는 좌,우측의 조건중 하나만 만족하면 될 때 사용합니다.
그럼 바로 쿼리문으로 확인해보도록 하겠습니다.
'사장' 직급이 아니면서, salary가 500 이상인 데이터에 대해서 조회하는 쿼리는 다음과 같습니다.
SELECT * FROM employee
WHERE job != '사장'
AND salary >= 500;
위와 같이 우리가 기대한 결과가 잘 나온 것을 확인할 수 있습니다.
그럼 이번에는 OR연산자를 이용해보도록 합시다.
commission을 포함한 연봉이 5500만원 이하이거나 '사원' 직급인 데이터를 조회하는 쿼리는 다음과 같습니다.
SELECT * FROM employee
WHERE (salary * 12) + isnull(commission,0) <= 5500
OR job = '사원';
위의 쿼리에서는 지난 시간에 배운 isnull() 함수를 이용하여 연봉을 계산하고 해당 값을 WHERE절 에서 그대로 사용하였습니다.
위와 같이 WHERE절에서 연산도 가능하니 참고하시기를 바랍니다.
3. BETWEEN A AND B
이번에 배워볼 것은 위와 같이 WHERE절에서 사용되는 BETWEEN A AND B 구문입니다.
만약 salary가 300이상 500이하인 데이터에 대해서 조회하려면 어떻게 해야할까요?
우리가 위에서 배운 내용대로라면, 아래와 같은 쿼리가 될 것입니다.
SELECT * FROM employee
WHERE salary >= 300
AND salary <= 500;
하지만 BETWEEN A AND B 구문을 이용하면 다음과 같이 쿼리를 작성하면 됩니다.
SELECT * FROM employee
WHERE salary BETWEEN 300 AND 500;
실제로 같은 결과를 가져오지만 이전의 쿼리보다 보다 간결하고 직관적임을 알 수 있습니다.
4. IN
마지막으로 배워볼 구문은 IN입니다.
만약 salary가 300, 400, 500, 600인 데이터를 조회하려면 어떻게 해야할까요?
이전의 학습을 기반으로 쿼리를 작성해보면 다음과 같습니다.
SELECT * FROM employee
WHERE salary = 300
OR salary = 400
OR salary = 500
OR salary = 600;
하지만 IN 구문을 이용하면 다음과 같이 쿼리를 작성할 수 있습니다.
SELECT * FROM employee
WHERE salary IN (300,400,500,600);
IN구문을 활용함으로써 OR을 통한 이전의 쿼리보다 더 간결하고 직관적임을 알 수 있습니다.
이번 포스팅에서는 WHERE 절을 이용해서 조건에 부합하는 데이터 조회방법에 대해서 알아보았습니다.
사실 WHERE절 없이 SELECT를 활용하는 경우보다는 WHERE절을 통해 원하는 데이터만 조회할 때가 더 많다고 생각됩니다. 따라서 위에 나온 쿼리문들 이외에도 다양하게 시도해보고 쿼리문을 만들어보시길 바랍니다.