728x90
반응형

- 조건, 비교, 확장을 위해서 사용되는 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;
728x90
반응형

+ Recent posts