코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

SQL Where

SQL WHERE: 조건에 맞는 데이터 필터링

SQL WHERE 절은 데이터를 조회하거나 조작할 때 특정 조건을 만족하는 행(row)만 선택하여 처리할 수 있도록 하는 SQL 문법입니다. WHERE 절은 SELECT, UPDATE, DELETE와 함께 사용되며, 원하는 데이터를 필터링할 때 매우 유용합니다.

이 글에서는 SQL의 WHERE 절 사용 방법, 다양한 조건 연산자, 논리 연산자, 그리고 실전 예제를 설명하겠습니다.

1. 기본 WHERE 절 문법

WHERE 절은 SQL 문 내에서 다음과 같이 사용됩니다:

SELECT 열이름1, 열이름2, ...
FROM 테이블이름
WHERE 조건;

  • 열이름: 조회할 열을 지정합니다.
  • 테이블이름: 데이터를 조회할 테이블의 이름입니다.
  • 조건: 데이터가 필터링되는 조건을 설정합니다.

예제:

SELECT name, salary
FROM employees
WHERE department = 'Sales';

이 쿼리는 employees 테이블에서 Sales 부서에 속한 직원들의 이름과 급여를 반환합니다.

2. WHERE 절에서 사용할 수 있는 연산자

2.1 비교 연산자

  • =: 값이 같음
  • != 또는 <>: 값이 같지 않음
  • >: 값이 큼
  • <: 값이 작음
  • >=: 값이 크거나 같음
  • <=: 값이 작거나 같음

예제:

SELECT *
FROM employees
WHERE salary > 5000;

이 쿼리는 급여가 5,000 이상인 직원들을 조회합니다.

2.2 BETWEEN

BETWEEN은 값이 두 값 사이에 있는지 확인할 때 사용됩니다.

SELECT *
FROM employees
WHERE salary BETWEEN 3000 AND 6000;

이 쿼리는 급여가 3,000에서 6,000 사이인 직원들을 반환합니다.

2.3 IN

IN은 여러 값 중 하나가 일치하는지 확인할 때 사용됩니다.

SELECT *
FROM employees
WHERE department IN ('Sales', 'HR');

이 쿼리는 부서가 Sales 또는 HR인 직원들을 반환합니다.

2.4 LIKE

LIKE는 패턴 일치를 통해 문자열을 검색하는 데 사용됩니다. LIKE는 주로 두 개의 와일드카드 문자와 함께 사용됩니다:

  • %: 0개 이상의 임의의 문자
  • _: 정확히 1개의 임의 문자
SELECT *
FROM employees
WHERE name LIKE 'J%';

이 쿼리는 이름이 'J'로 시작하는 모든 직원들을 조회합니다.

SELECT *
FROM employees
WHERE name LIKE '_ohn';

이 쿼리는 이름이 네 글자이고 마지막 세 글자가 'ohn'인 모든 직원들을 조회합니다 (예: John).

2.5 IS NULL

IS NULL은 값이 NULL인 데이터를 조회할 때 사용됩니다. NULL은 값이 없음을 나타냅니다.

SELECT *
FROM employees
WHERE hire_date IS NULL;

이 쿼리는 고용 날짜가 없는 직원들을 조회합니다.

3. 논리 연산자

SQL의 논리 연산자는 여러 조건을 결합할 때 사용됩니다.

3.1 AND

AND는 두 조건이 모두 참일 때 데이터를 반환합니다.

SELECT *
FROM employees
WHERE salary > 5000 AND department = 'Sales';

이 쿼리는 급여가 5,000 이상이고 부서가 Sales인 직원들을 조회합니다.

3.2 OR

OR는 두 조건 중 하나라도 참이면 데이터를 반환합니다.

SELECT *
FROM employees
WHERE salary > 5000 OR department = 'HR';

이 쿼리는 급여가 5,000 이상이거나 부서가 HR인 직원들을 조회합니다.

3.3 NOT

NOT은 조건을 반전시킵니다. 즉, 조건이 참이 아닌 데이터를 반환합니다.

SELECT *
FROM employees
WHERE NOT department = 'HR';

이 쿼리는 HR 부서에 속하지 않은 직원들을 반환합니다.

4. WHERE와 함께 사용하는 연산자

4.1 ORDER BY

ORDER BY 절은 결과를 정렬할 때 사용됩니다. WHERE 절로 필터링된 데이터를 특정 열을 기준으로 오름차순 또는 내림차순으로 정렬할 수 있습니다.

SELECT *
FROM employees
WHERE salary > 5000
ORDER BY salary DESC;

이 쿼리는 급여가 5,000 이상인 직원들을 급여 기준으로 내림차순으로 정렬합니다.

4.2 LIMIT

LIMIT 절은 결과에서 반환할 행의 개수를 제한합니다. 이를 통해 대량의 데이터를 필터링한 후 원하는 개수만큼 데이터를 반환할 수 있습니다.

SELECT *
FROM employees
WHERE department = 'Sales'
LIMIT 3;

이 쿼리는 Sales 부서에 속한 첫 세 명의 직원을 반환합니다.

5. WHERE 절과 함께 자주 사용하는 함수

5.1 COUNT()

COUNT() 함수는 특정 조건을 만족하는 행의 개수를 반환합니다.

SELECT COUNT(*)
FROM employees
WHERE salary > 5000;

이 쿼리는 급여가 5,000 이상인 직원의 수를 반환합니다.

5.2 SUM(), AVG(), MAX(), MIN()

이 함수들은 WHERE 절과 함께 사용하여 조건을 만족하는 데이터의 합계, 평균, 최대값, 최소값을 구할 수 있습니다.

SELECT SUM(salary)
FROM employees
WHERE department = 'Sales';

이 쿼리는 Sales 부서의 직원들의 급여 합계를 반환합니다.

6. 서브쿼리와 WHERE 절

서브쿼리WHERE 절 내에서 다른 쿼리의 결과를 조건으로 사용할 수 있는 쿼리입니다. 주로 복잡한 데이터 필터링 작업에서 사용됩니다.

SELECT name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

이 쿼리는 전체 평균 급여보다 높은 급여를 받는 직원들의 이름을 조회합니다.

7. 실전 예제

예제 1: 특정 부서에서 높은 급여를 받는 직원 조회

SELECT name, salary
FROM employees
WHERE department = 'HR' AND salary > 5000;

이 쿼리는 HR 부서에서 급여가 5,000 이상인 직원들의 이름과 급여를 조회합니다.

예제 2: 특정 패턴의 이메일 주소를 가진 직원 조회

SELECT name, email
FROM employees
WHERE email LIKE '%@example.com';

이 쿼리는 이메일 주소가 example.com으로 끝나는 모든 직원들의 이름과 이메일 주소를 조회합니다.

예제 3: 특정 기간에 고용된 직원 조회

SELECT name, hire_date
FROM employees
WHERE hire_date BETWEEN '2020-01-01' AND '2021-12-31';

이 쿼리는 2020년과 2021년 사이에 고용된 직원들의 이름과 고용 날짜를 조회합니다.

요약

SQL WHERE 절은 데이터를 필터링하여 특정 조건에 맞는 행만 조회하거나 조작할 수 있게 해주는 중요한 도구입니다. 비교 연산자, 논리 연산자, 패턴 일치(예: LIKE) 등을 사용하여 다양한 필터링 조건을 설정할 수 있습니다. WHERE 절은 데이터베이스 작업에서 가장 자주 사용되며, 데이터를 효과적으로 관리하고 분석할 수 있는 기본적인 SQL 문법 중 하나입니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com