데이터베이스에서 데이터 검색 및 분석의 핵심은 쿼리를 통한 효과적인 데이터 처리입니다. 복잡한 데이터 세트를 다룰 때, 특히 유용한 기능들인 '집합 연산자'와 다양한 'JOIN' 유형을 살펴보겠습니다.
집합 연산자
집합 연산자 종류
| 종류 | 설명 |
| UNION | 여러 개의 SQL 문의 결과에 대한 합집합으로 결과에서 중복된 모든 행은 하나의 행으로 출력 |
| UNION ALL | 여러 개의 SQL문의 결과에 대한 합집합으로 중복된 행도 그대로 결과로 표시 |
| INTERSECT | 여러 개의 SQL 문의 결과에 대한 교집합으로 중복된 행은 하나의 행으로 출력 |
| EXCEPT (MINUS) |
앞의 SQL 문의 결과에서 뒤의 SQL문의 결과에 대한 차집합으로 중복된 행은 하나의 행으로 출력 |
집합 연산자 사용 예시 쿼리
| id | name |
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
| 4 | David |
| id | name |
| 1 | Alice |
| 2 | Eve |
| 3 | Frank |
-- 서로 다른 두 테이블에서 'name' 필드를 선택하여 합칩니다.
SELECT name FROM employees
UNION
SELECT name FROM managers;
| name |
| Alice |
| Bob |
| Charlie |
| David |
| Eve |
| Frank |
-- 서로 다른 두 테이블에서 'name' 필드를 선택하여 합치되 중복 허용.
SELECT name FROM employees
UNION ALL
SELECT name FROM managers;
| name |
| Alice |
| Bob |
| Charlie |
| David |
| Alice |
| Eve |
| Frank |
-- 두 테이블에서 공통적으로 등장하는 이름을 찾습니다.
SELECT name FROM employees
INTERSECT
SELECT name FROM managers;
| name |
| Alice |
-- 직원 중에서 관리자가 아닌 사람들의 이름을 찾습니다.
SELECT name FROM employees
MINUS
SELECT name FROM managers;
| name |
| Bob |
| Charlie |
| David |
JOIN
JOIN의 종류
JOIN 종류 별 사용 예시 쿼리
| id | name | department_id |
| 1 | Alice | 1 |
| 2 | Bob | 2 |
| 3 | Charlie | 3 |
| 4 | David | NULL |
| id | department_name |
| 1 | HR |
| 2 | Engineering |
| 3 | Marketing |
| 5 | Sales |
SELECT e.name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.id;
| name | department_name |
| Alice | HR |
| Bob | Engineering |
| Charlie | Marketing |
-- 여기서는 동일한 이름을 가진 'id' 컬럼은 없으므로 'department_id'와 'id'의 이름을 일치시켜야 합니다.
SELECT e.name, d.department_name
FROM employees e
NATURAL JOIN (SELECT id AS department_id, department_name FROM departments) d;
| name | department_name |
| Alice | HR |
| Bob | Engineering |
| Charlie | Marketing |
SELECT e.name, d.department_name
FROM employees e
FULL OUTER JOIN departments d ON e.department_id = d.id;
| name | department_name |
| Alice | HR |
| Bob | Engineering |
| Charlie | Marketing |
| David | NULL |
| NULL | Sales |
SELECT e.name, d.department_name
FROM employees e
LEFT OUTER JOIN departments d ON e.department_id = d.id;
| name | department_name |
| Alice | HR |
| Bob | Engineering |
| Charlie | Marketing |
| David | NULL |
SELECT e.name, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d ON e.department_id = d.id;
| name | department_name |
| Alice | HR |
| Bob | Engineering |
| Charlie | Marketing |
| NULL | Sales |
SELECT e.name, d.department_name
FROM employees e
CROSS JOIN departments d;
| name | department_name |
| Alice | HR |
| Alice | Engineering |
| Alice | Marketing |
| Alice | Sales |
| Bob | HR |
| Bob | Engineering |
| Bob | Marketing |
| Bob | Sales |
| Charlie | HR |
| Charlie | Engineering |
| Charlie | Marketing |
| Charlie | Sales |
| David | HR |
| David | Engineering |
| David | Marketing |
| David | Sales |
데이터베이스 쿼리는 강력한 도구이며, 집합 연산자와 다양한 JOIN 기법을 통해 데이터를 조작하고, 분석하는 능력을 강화할 수 있습니다. 이러한 기능들을 적절히 활용하여 데이터베이스 관리의 효율성을 높여보세요. 2024년에 정보처리기사를 따기 위해 노력하는 모두에게 행운을 빕니다!

| [정보처리기사 실기 공부] 그룹 함수와 윈도우 함수 (0) | 2024.05.16 |
|---|---|
| [정보처리기사 실기 공부] SELECT 쿼리 활용 (2) (0) | 2024.05.13 |
| [정보처리기사 실기 공부] SQL 기본 문법과 종류 (2) (0) | 2024.05.01 |
| [정보처리기사 실기 공부] SQL 기본 문법과 종류 (1) (0) | 2024.04.25 |
| [정보처리기사 실기 공부] 분산 데이터베이스 (0) | 2024.04.24 |