[다중 테이블 검색 기법]

  • 조인
  • 서브쿼리
  • 집합 연산자

 

1. 조인

[개념]

  • Join, 결합을 의미하며 RDB에서의 조인은 교집합 결과로 데이터 결합 방법을 의미한다. 
  • 두 테이블의 공통값을 이용하여 칼럼을 조합하는 수단으로 사용된다.
  • 보통 PK(Primary Key, 기본키)나 FK(Foreign Key, 외래키)값을 결합하여 사용한다. 
  • 세 개 이상의 테이블 조인은 두 개의 테이블을 우선 조인한 후 그 결과와 나머지 테이블을 다시 조인한다.

내부조인, INNER JOIN

[유형]

논리적 조인  - 사용자가 직접 작성한 SQL문에 의해 표현한 테이블 결합 방식
물리적 조인  - DBMS의 옵티마이저 엔진에 의해 발생하는 테이블 결합 방식
 - Nested Loop Join
 - Merge Join 
 - Hash Join
  (빨간 글씨: 처음 들어보는 단어)

 

[유형(세분)]

내부 조인  - 두 테이블에 공통으로 있는 열을 활용하는 유형
 - 공통 컬럼(열) 기반
외부 조인  - 특정 테이블의 모든 데이터 기준, 다른 테이블의 정보와 비교하여 추출한다.
 - 다른 테이블에 동일한 값이 없어도 특정 테이블은 출력된다.

 

내부조인 동등  - 공통으로 있는 컬럼값이 같은 경우 레코드(행) 추출한다.
자연  - 두 테이블에 있는 동일한 컬럼명을 기준으로 모든 컬럼값이 같은 경우 레코드(행) 추출한다.
교차  - 조인 조건이 없는 모든 데이터의 조합을 추출한다.

 

외부조인 왼쪽  - 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일 데이터를 추출한다.
 - 오른쪽 테이블에 동일한 값이 없어도 왼쪽 테이블의 레코드는 출력된다.
오른쪽  - 오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 동일 데이터를 추출한다.
 - 왼쪽 테이블의 동일한 값이 없어도 오른쪽 테이블의 레코드는 출력된다.
완전  - My에서만 사용 가능하며 Or에서는 불가능하다고 한다. (수업메모)
 - 양쪽의 모든 데이터를 추출한다.

 - 양쪽 테이블에 동일한 값이 없어도 양쪽 테이블의 레코드는 출력된다.

 

SQL Join 종류

https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

 

Visual Representation of SQL Joins

This article describes SQL Joins in a visual manner, and also the most efficient way to write the visualized Joins.

www.codeproject.com

2. 서브쿼리

[개념]

  • SQL문 안에 포함된 또 다른 SQL문을 의미한다.
  • 확인되지 앟은 기준을 위해 검색하는 용도로 사용된다.
  • 메인쿼리와 서브쿼리는 주종관계를 이룬다.
  • 당연하게도 서브쿼리에 작성된 컬럼명은 메인쿼리의 컬럼명을 가져와서 사용할 수 있으나 역은 성립하지 않는다.

[유형1 (우선동작)]

비연관
(Un-Correlated)
 - 서브쿼리 안에 메인쿼리의 커럼 정보를 가지고 있지 않은 형태를 의미한다.
 - 메인쿼리 없이 독자적으로 실행한다.
연관
(Correlated)
 - 서브쿼리 안에 메인쿼리의 컬럼 정보를 가지고 있는 형태를 의미한다.
 - 메인쿼리의 실행된 결과를 통해 서브쿼리의 조건이 맞는지 확인한다.

[유형2 (반환 데이터 형태)]

단일 행
(Single Row)
 - 서브쿼리의 결과가 항상 1건 이하인 서브쿼리를 의미한다.
 - 단일 행의 비교 연산자에는 = , < , <= , > , >= , <> 등이 있다.
다중 행
(Multiple Row)
 - 서브쿼리의 실행 결과가 여러 건인 서브쿼리를 의미한다.
 - 다중 행의 비교 연산자에는 IN, EXISTS, ALL, ANY 등이 있다.
 - From 뒤에 또는 WHERE 절에 사용된다. (수업메모)
다중 컬럼
(Multiple Column)
 - 서브쿼리의  실행 결과가 2개 이상 컬럼으로 반환되는 쿼리를 의미한다.
 - 메인쿼리의 조건절에 다수 칼럼을 비교할 때, 서브와 메인에서 비교하는 칼럼 개수, 위치가 동일해야 한다.

 

3. 집합 연산자

[개념]

UNION  - 2개 이상 SQL문의 실행 결과에 대한 중복을 제거한 합집합 
 - ((AB) - (AB))
UNION ALL  - 2개 이상 SQL문의 실행 결과에 대한 중복을 제거하지 않은 합집합
 - A와 B
INTERSECTION  - 2개 이상 SQL문의 실행 결과에 대한 중복을 제거한 교집합
 - (AB)
 - ???, 중복 값을 한 번만 출력한다는 뜻인가?
EXCEPT (MINUS)  - 선행 SQL문의 실행 결과와 후행 SQL문의 실행 결과 사이의 중복을 제거한 차집합
 - DBMS마다 EXCEPT을 쓰기도 MINUS를 쓰기도 한다고 한다.
 - (A-B)

 

'SQL' 카테고리의 다른 글

DCL  (0) 2022.03.10
DDL  (0) 2022.02.25
SQL 문법 정리  (0) 2022.02.09

+ Recent posts