TOP
class="layout-aside-left paging-number">
본문 바로가기
자격증/SQLD

SQLD 2과목 SQL 기본 및 활용 - 표준 조인

by 기록자_Recordian 2024. 1. 14.
728x90
반응형

<목차>

 

7. 표준 조인

표준 조인 개요

 

- 현재 기업형 DBMS는 순수 관계형 데이터베이스가 아닌 객체 지원 기능이 포함된 객체관계형(Object Relational) 데이터베이스 대부분 사용

- SQL: 현재 사용하는 많은 시스템의 두뇌 역할을 하는 관계형 데이터베이스를 유일하게 접속할 수 있는 언어

- 1999년, ANSI/ISO SQL3 : 기존의 SQL 버전은 표준 SQL에 대한 명세가 부족하고, DBMS 벤더 별로 문법이나 사용되는 용어의 차이가 너무 커져서 상호 호환성이나 SQL 학습 효율이 많이 부족한 문제 발생.

▶ SQL에서 필요한 기능을 정리하고 호환 가능한 여러 기준 제정

- 2003년, ANSI/ISO SQL 기준이 소폭 추가 개정되었고 현재 사용되는 데이터베이스는 대부분 SQL-2003 표준을 기준으로 하고 있음.

 

※ 대표적인 ANSI/ISO 표준 SQL 기능

  • STANDARD JOIN 기능 추가 (CROSS, OUTER JOIN 등 새로운 FROM 절 JOIN 기능들)
  • SCALAR SUBQUERY, TOP-N QUERY 등의 새로운 SUBQUERY 기능들
  • ROLLUP, CUBE, GROUPING SETS 등의 새로운 리포팅 기능
  • WINDOW FUNCTION 같은 새로운 개념의 분석 기능들

1) 일반 집합 연산자

 

일반 집합 연산자와 현재의 SQL 비교

  • UNION 연산은 UNION 기능으로, (수학적 합집합 제공)
  • INTERSECTION 연산은 INTERSECT 기능으로, (수학의 교집합)
  • DIFFERENCE 연산은 EXCEPT (Oracel: MINUS) 기능으로, (수학의 차집합)
  • PRODUCT 연산은 CROSS JOIN 기능으로 구현 (수학의 곱집합)

2) 순수 관계 연산자

 

순수 관계 연산자와 현재의 SQL 비교

  • SELECT 연산은 WHERE 절로 구현 (WHERE 절의 조건절 기능)
  • PROJECT 연산은 SELECT 절로 구현 (칼럼 선택 기능)
  • (NATURAL) JOIN 연산은 다양한 JOIN 기능으로 구현 (가장 다양하게 발전)
  • DIVIDE 연산은 현재 미사용

FROM 절 JOIN 형태

 

ANSI/ISO SQL에서 규정한 JOIN 문법은 WHERE 절을 사용하던 기존 JOIN 방식과 차이가 있음.

사용자는 기존 WHERE 절의 검색 조건과 테이블 간의 JOIN 조건을 구분 없이 사용하던 방식을 그대로 사용할 수 있으면서, 추가된 선택 기능으로 테이블 간의 JOIN 조건을 FROM 절에서 명시적으로 정의할 수 있게 됨.

JOIN 명 특징
INNER JOIN(내부조인) - JOIN 조건에서 동일한 값이 있는 행만 반환
(CROSS JOIN, OUTER JOIN 과는 같이 사용 불가)
- 그동안 WHERE 절에서 사용하던 JOIN 조건을 FROM 절에서 정의하겠다는 표시이므로
USING 조건절이나 ON 조건절을 필수적으로 사용해야 함.
NATURAL JOIN - INNER JOIN의 하위 개념. 두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 대해
EQUI JOIN 수행(NATURAL INNER JOIN 이라고도 표시)
- 테이블의 데이터 성격(도메인)과 칼럼명 등이 동일해야 하는 제약 조건 있음.
- 추가로 USING 조건절, ON 조건절, WHERE 절에서 JOIN 조건을 정의할 수 없음.
- SQL Server에서는 미지원
USING 조건절 - USING 절에 두 테이블에 존재하는 공통된 컬럼명 사용.
- 데이터 유형도 동일해야 함.
- SQL Server에서는 미지원
ON 조건절 - JOIN 조건이 숨이 있지 않고, 명시적으로 JOIN 조건을 구분할 수 있고,
NATURAL JOIN이나 USING 조건절처럼 칼럼명이 똑같아야 된다는 제약 없이
칼럼명이 상호 다르더라도 JOIN 조건으로 사용 가능.
- FROM 절에 테이블이 많아 사용될 경우 다소 복잡하게 보여 가독성이 떨어지는 단점.
CROSS JOIN 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합
OUTER JOIN (외부조인) JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용 가능
LEFT OUTER JOIN 조인 수행 시 먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽은 후,
나중 표기된 우측 테이블에서 JOIN 대상 데이터를 읽어옴.
우측 JOIN 칼럼에서 같은 값이 없는 경우에는 우측 테이블에서 가져오는 칼럼들은
 NULL 값으로 표기
RIGHT OUTER JOIN 우측 테이블이 기준이 되어 결과 생성.
FULL OUTER JOIN 조인 수행 시 좌측, 우측 테이블의 모든 데이터를 읽어 JOIN 하여 결과 생성.
UNION ALL 이 아닌, UNION 기능과 동일. (모든 중복된 행은 하나의 행으로 만듦.)

 

OUTER JOIN 설명 (출처: 데이터 자격검정 협회)

 


JOIN 비교 

INNER vs OUTER vs CROSS JOIN 비교 (출처: 데이터 자격검정 협회)

[각 JOIN의 결과]

  • INNER JOIN: 양쪽 테이블에 모두 존재하는 키 값이 B-B, C-C인 2건 출력
  • LEFT OUTER JOIN: TAB1을 기준으로 키 값 조합이 B-B, C-C, D-NULL, E-NULL 인 4건 출력
  • RIGHT OUTER JOIN: TAB2를 기준으로 키 값 조합이 NULL-A, B-B, C-C 인 3건 출력
  • FULL OUTER JOIN: 양쪽 테이블을 기준으로 키 값 조합이 NULL-A, B-B, C-C, D-NULL, E-NULL인 5건 출력
  • CROSS JOIN: JOIN 가능한 모든 경우의 수를 표시하지만, 단 OUTER JOIN은 제외
  • > 양쪽 테이블 TAB1과 TAB2의 데이터를 곱합 개수인 4*3 = 12건 출력

이전글

조인

 

다음글

SQLD 2과목 SQL 활용 - 서브쿼리

728x90
반응형