- 조건, 비교, 확장을 위해서 사용되는 SQL 연산자
> BETWEEN 연산자
- 두 값의 범위에 해당하는 데이터만 출력할 때 사용되는 확장 연산자
-- 120 <= empoyee_id <= 130
SELECT *
FROM employees
WHERE employee_id BETWEEN 120 AND 130;
-- 10000 <= salary <= 12000
SELECT *
FROM employees
WHERE salary BETWEEN 10000 AND 12000;
> IN 연산자
- 여러 개의 데이터 값을 지정하여 일치하는 데이터만 출력할 때 사용
SELECT *
FROM employees
WHERE first_name IN ('Steven', 'John', 'Peter');
SELECT *
FROM countries
WHERE country_id IN ('US', 'IL', 'SG');
SELECT *
FROM locations
WHERE city NOT IN ('Sao Paulo', 'London', 'Southlake');
> IS NULL 연산자
- 특정 속성의 값이 NULL 값인지를 비교화여 데이터 조회
-- 필드가 (null)값인 것을 출력
SELECT *
FROM locations
WHERE state_province IS NULL;
-- commission_pct 필드에 (null)값이 아닌 것 모두 출력
SELECT *
FROM employees
WHERE commission_pct IS NOT NULL;
> LIKE 연산자
- 문자열 속성에서 부분적으로 일치하는 것만 출력할 때 사용
% : 0개 이상의 문자 (문자의 내용과 갯수는 상관 없음)
_ : 1개의 문자 (문자의 내용은 상관 없음)
-- A로 시작하는 문자열 (길이 상관없이 A로 시작)
LIKE 'A%'
-- A로 끝나는 문자열 (길이 상관없이 A로 끝남)
LIKE '%A'
-- A가 포함된 문자열 (길이 상관 없이 A가 포함)
LIKE '%A%'
-- A로 시작하는 4자리 문자열
LIKE 'A___' (under-bar 3개 + A)
-- A로 끝나는 4자리 문자열
LIKE '___A' (under-bar 3개 + A)
SELECT *
FROM locations
WHERE city LIKE 'South%';
SELECT *
FROM locations
WHERE street_address LIKE '%St';
SELECT *
FROM locations
WHERE city LIKE 'South____';
> 집합 연산자
- 연산자 앞 뒤의 값을 비교하여 데이터 조회
UNION : 합집합 (중복 제외)
UNION ALL: 합집합 (중복 포함)
MINUS: 차집합
INTERSECT: 교집합
SELECT employee_id, first_name, department_id
FROM employees
WHERE department_id = 60
UNION
SELECT employee_id, first_name, department_id
FROM employees
WHERE department_id = 100;
SELECT employee_id, first_name
FROM employees
WHERE employee_id <= 160
UNION
SELECT employee_id, first_name
FROM employees
WHERE employee_id >= 140;
SELECT employee_id, first_name
FROM employees
WHERE employee_id <= 160
UNION ALL
SELECT employee_id, first_name
FROM employees
WHERE employee_id >= 140;
SELECT employee_id, first_name
FROM employees
WHERE employee_id <= 160
MINUS
SELECT employee_id, first_name
FROM employees
WHERE employee_id >= 140;
SELECT employee_id, first_name
FROM employees
WHERE employee_id <= 160
INTERSECT
SELECT employee_id, first_name
FROM employees
WHERE employee_id >= 140;
[실습] 정렬, 집합 연산자
- jobs 테이블에서 job_title 기준으로 정렬하여 직업 조회
SELECT job_title
FROM jobs
ORDER BY job_title;
- countries 테이블에서 country_name 기준 내림차순으로 정렬하여 조회
SELECT country_name
FROM countries
ORDER BY country_name DESC;
- employees 테이블에서 salary가 10,000에서 12,000 사이인 직원 조회
SELECT *
FROM employees
WHERE salary BETWEEN 10000 AND 12000;
-- WHERE salary > 10000 AND salary <12000;
- employees 테이블에서 job_id 가 'IT_PROG'와 'ST_MAN'인 직원 조회
SELECT *
FROM employees
WHERE job_id IN ('IT_PROG', 'ST_MAN');
-- WHERE job_id = 'IT_PROG' OR job_id = 'ST_MAN';
- employees 테이블에서 manager_id가 NULL인 직원 조회
SELECT *
FROM employees
WHERE manager_id IS NULL;
- departments 테이블에서 manager_id가 NULL 이 아닌 부서 조회
SELECT *
FROM departments
WHERE manager_id IS NOT NULL;
- employees 테이블에서 job_id가 'AD'로 시작하는 직원 조회
SELECT *
FROM employees
WHERE job_id LIKE 'AD%';
- employees 테이블의 first_name에서 'ni'를 포함하는 직원 조회
SELECT *
FROM employees
WHERE first_name LIKE '%ni%';
- locations 테이블에서 location_id, street_address, city에 대해 locaction_id가 3,000 이하인 데이터와
2,000 이상인 데이터를 합집합(중복포함), 차집합, 교집합 한 결과 조회
SELECT location_id, street_address, city
FROM locations
WHERE location_id <= 3000
UNION
-- UNION ALL
-- MINUS
-- INTERSECT
SELECT location_id, street_address, city
FROM locations
WHERE location_id >= 2000;
'Language > RDBMS' 카테고리의 다른 글
[DML_SELECT] SQL 함수(숫자, 날짜, 변환, 일반) (0) | 2023.03.03 |
---|---|
[DML_SELECT] SQL 함수(문자) (0) | 2023.03.03 |
[DML_SELECT] ORDER BY 구문을 활용한 정렬 (0) | 2023.03.02 |
[DML_SELECT] WHERE 구문을 활용한 비교, 논리 연산 (0) | 2023.03.02 |
[DML_SELECT] SELECT 조작어를 활용한 데이터 조회 (0) | 2023.03.02 |