상세 컨텐츠

본문 제목

[정보처리기사 실기 공부] SELECT 쿼리 활용 (1)

정보처리기사 공부지식

by 소란한소란 2024. 5. 12. 21:55

본문

728x90

데이터베이스 관리: 집합 연산자와 JOIN의 활용

데이터베이스에서 데이터 검색 및 분석의 핵심은 쿼리를 통한 효과적인 데이터 처리입니다. 복잡한 데이터 세트를 다룰 때, 특히 유용한 기능들인 '집합 연산자'와 다양한 'JOIN' 유형을 살펴보겠습니다.


집합 연산자

  • 개념
    • 여러 개의 질의의 결과를 연결하여 하나로 결합하는 방식

집합 연산자 종류

종류 설명
UNION 여러 개의 SQL 문의 결과에 대한 합집합으로 결과에서 중복된 모든 행은 하나의 행으로 출력
UNION ALL 여러 개의 SQL문의 결과에 대한 합집합으로 중복된 행도 그대로 결과로 표시
INTERSECT 여러 개의 SQL 문의 결과에 대한 교집합으로 중복된 행은 하나의 행으로 출력
EXCEPT
(MINUS)
앞의 SQL 문의 결과에서 뒤의 SQL문의 결과에 대한 차집합으로 중복된 행은 하나의 행으로 출력

 

집합 연산자 사용 예시 쿼리

  • employees 테이블
id name
1 Alice
2 Bob
3 Charlie
4 David
  • managers 테이블
id name
1 Alice
2 Eve
3 Frank
  • UNION
-- 서로 다른 두 테이블에서 'name' 필드를 선택하여 합칩니다.
SELECT name FROM employees
UNION
SELECT name FROM managers;

 

  • 결과
name
Alice
Bob
Charlie
David
Eve
Frank
  • UNION ALL
-- 서로 다른 두 테이블에서 'name' 필드를 선택하여 합치되 중복 허용.
SELECT name FROM employees
UNION ALL
SELECT name FROM managers;

 

  • 결과
name
Alice
Bob
Charlie
David
Alice
Eve
Frank
  • INTERSECT
-- 두 테이블에서 공통적으로 등장하는 이름을 찾습니다.
SELECT name FROM employees
INTERSECT
SELECT name FROM managers;

 

  • 결과
name
Alice
  • MINUS
-- 직원 중에서 관리자가 아닌 사람들의 이름을 찾습니다.
SELECT name FROM employees
MINUS
SELECT name FROM managers;
  • 결과
name
Bob
Charlie
David

JOIN

  • 개념
    • 두개 이상의 테이블을 결합하여 데이터를 검색하는 방법

JOIN의 종류

  • 내부 조인(Inner Join)
    • 두 테이블에 존재하는 데이터 중에 공통된 데이터만 추출
  • 자연 조인(Natural Join)
    • 동일한 타입과 이름을 가진 컬럼을 조인 조건으로 이용하는 조인을 간단히 표현하는 방법
  • 전체 외부 조인(Full Outer Join)
    • 좌측테이블과 우측테이블의 데이터를 모두 읽어 중복된 데이터는 삭제한 JOIN 결과 반환
  • 왼쪽 외부 조인(Left Outer Join)
    • 좌측테이블 기준으로 일치하는 행만 결합하고, 일치하지 않는 부분은 NULL로 채움
  • 오른쪽 외부 조인(Right Outer Join)
    • 우측테이블 기준으로 일치하는 행만 결합하고, 일치하지 않는 부분은 NULL로 채움
  • 곱집합(Cross Join)
    • 두 테이블 데이터의 모든 조합을 반환

 

JOIN 종류 별 사용 예시 쿼리

  • employees 테이블
id name department_id
1 Alice 1
2 Bob 2
3 Charlie 3
4 David NULL
  • departments 테이블
id department_name
1 HR
2 Engineering
3 Marketing
5 Sales
  • 내부 조인(Inner Join)
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
  • 자연 조인(Natural Join)
-- 여기서는 동일한 이름을 가진 '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
  • 전체 외부 조인(Full Outer Join)
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
  • 왼쪽 외부 조인(Left Outer Join)
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
  • 오른쪽 외부 조인(Right Outer Join)
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
  • 곱집합(Cross Join)
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년에 정보처리기사를 따기 위해 노력하는 모두에게 행운을 빕니다!

 

728x90

관련글 더보기