SQL Or
SQL OR: 조건 중 하나라도 참인 데이터를 필터링
SQL OR 연산자는 WHERE 절에서 여러 조건을 결합할 때 사용되며, 조건 중 하나라도 참일 경우 데이터를 반환합니다.
OR
연산자는 여러 조건을 결합할 수 있어 좀 더 유연한 데이터 필터링을 제공합니다.
1. 기본 SQL OR 문법
OR
연산자는 WHERE 절에서 다음과 같은 구조로 사용됩니다:
SELECT 열이름1, 열이름2, ...
FROM 테이블이름
WHERE 조건1 OR 조건2 OR 조건3 ...;
- 조건1, 조건2, ...: 조건 중 하나라도 참이면 데이터를 반환합니다.
2. SQL OR 예제
2.1 예제 1: 두 조건을 사용하는 OR
다음은 employees
테이블에서 부서가 Sales
이거나 급여가 5,000 이상인 직원을 조회하는 예제입니다.
SELECT name, department, salary
FROM employees
WHERE department = 'Sales' OR salary >= 5000;
이 쿼리는 부서가 Sales이거나, 급여가 5,000 이상인 모든 직원을 반환합니다.
결과 예시:
name | department | salary |
---|---|---|
John Doe | Sales | 4000 |
Jane Roe | HR | 6000 |
Alice | Sales | 5000 |
2.2 예제 2: 세 가지 조건을 사용하는 OR
다음은 employees
테이블에서 부서가 Sales
이거나, 급여가 5,000 이상이거나, 고용일이 2020년 이후인 직원을 조회하는 예제입니다.
SELECT name, department, salary, hire_date
FROM employees
WHERE department = 'Sales' OR salary >= 5000 OR hire_date > '2020-01-01';
이 쿼리는 부서가 Sales, 급여가 5,000 이상, 또는 고용일이 2020년 이후인 모든 직원을 반환합니다.
결과 예시:
name | department | salary | hire_date |
---|---|---|---|
John Doe | Sales | 4000 | 2019-04-10 |
Jane Roe | HR | 6000 | 2020-05-12 |
Alice | Sales | 5000 | 2021-03-15 |
3. SQL OR와 AND의 차이
- OR: 조건 중 하나라도 참이면 데이터를 반환합니다.
- AND: 모든 조건이 참일 때만 데이터를 반환합니다.
예제:
SELECT name, department, salary
FROM employees
WHERE department = 'Sales' OR salary >= 5000;
위 쿼리는 Sales
부서이거나 급여가 5,000 이상인 직원을 반환합니다.
SELECT name, department, salary
FROM employees
WHERE department = 'Sales' AND salary >= 5000;
이 쿼리는 부서가 Sales이면서 급여가 5,000 이상인 직원들만 반환합니다.
4. OR와 AND 함께 사용하기
OR
와 AND
연산자를 함께 사용하여 보다 복잡한 조건을 구성할 수 있습니다. 이때 괄호를 사용하여 조건의 우선순위를 명확하게 할 수
있습니다.
예제:
SELECT name, department, salary
FROM employees
WHERE (department = 'Sales' OR department = 'HR') AND salary >= 5000;
이 쿼리는 부서가 Sales 또는 HR이면서 동시에 급여가 5,000 이상인 직원을 조회합니다.
결과 예시:
name | department | salary |
---|---|---|
Jane Roe | HR | 6000 |
Alice | Sales | 5000 |
5. OR와 함께 사용할 수 있는 연산자
OR
연산자는 여러 비교 연산자와 함께 사용할 수 있습니다. 다양한 조건을 결합하여 유연하게 데이터를 필터링할 수 있습니다.
=
: 값이 같음!=
또는<>
: 값이 같지 않음>
: 값이 큼<
: 값이 작음>=
: 값이 크거나 같음<=
: 값이 작거나 같음
예제:
SELECT name, salary
FROM employees
WHERE salary > 6000 OR salary < 3000;
이 쿼리는 급여가 6,000 이상이거나 3,000 이하인 직원을 반환합니다.
6. OR와 BETWEEN, IN 결합
OR
연산자는 BETWEEN이나 IN 연산자와 함께 사용하여 값을 비교하거나 특정 값 집합에 속하는 데이터를 필터링할 수
있습니다.
6.1 OR와 BETWEEN 결합
SELECT name, salary
FROM employees
WHERE salary BETWEEN 3000 AND 4000 OR salary BETWEEN 6000 AND 7000;
이 쿼리는 급여가 3,000에서 4,000 사이이거나 6,000에서 7,000 사이인 직원을 반환합니다.
6.2 OR와 IN 결합
SELECT name, department
FROM employees
WHERE department IN ('Sales', 'HR') OR salary > 5000;
이 쿼리는 부서가 Sales 또는 HR이거나 급여가 5,000 이상인 직원을 반환합니다.
7. 실전 예제
예제 1: 부서와 고용일 조건을 결합하여 직원 조회
SELECT name, department, hire_date
FROM employees
WHERE department = 'Sales' OR hire_date > '2021-01-01';
이 쿼리는 부서가 Sales이거나 2021년 이후에 고용된 직원을 조회합니다.
예제 2: 급여와 부서를 기준으로 직원 조회
SELECT name, department, salary
FROM employees
WHERE salary > 6000 OR department = 'HR';
이 쿼리는 급여가 6,000 이상이거나 부서가 HR인 직원을 조회합니다.
예제 3: 여러 조건을 사용하여 특정 부서 직원 조회
SELECT name, department, salary, hire_date
FROM employees
WHERE (department = 'Engineering' OR department = 'HR') AND hire_date > '2020-01-01';
이 쿼리는 Engineering 또는 HR 부서에 속하면서 2020년 이후에 고용된 직원을 조회합니다.
요약
SQL OR 연산자는 여러 조건 중 하나라도 참일 때 데이터를 반환하는 데 사용되며, 다양한 조건을 유연하게 결합하여 데이터를 필터링할 수 있습니다. OR
연산자는 AND
와 결합하여 더욱 복잡한 조건을 만들 수 있으며, 데이터를 보다 유연하게 조회할 수 있게 도와줍니다. BETWEEN
, IN
,
LIKE
와 같은 다른 연산자와도 잘 결합하여 사용할 수 있습니다.