제 1절 표준 조인

1. Standard SQL 개요

  • 표준 SQL의 기능
    • STANDARD JOIN(CROSS, OUTER JOIN 등)
    • SCALAR SUBQUERY, TOP-N QUERY 등 새로운 서브쿼리
    • ROLLUP, CUBE, GROUPING SETS 등의 그룹함수
    • WINDOW FUNCTION(윈도 함수-온라인 분석 처리 용도)

1.1 관계대수

어떻게 질의를 수행할 것인가를 명시하는 절차적인 언어(How)

가. 일반 집합 연산자

  1. Union (UNION)

    • 합집합 연산

    • UNION ALL은 교집합 2번 보여줌.

      A,B 컬럼이 교집합이 없을시 UNION ALL이 성능 ↑

  2. Intersection (INTERSECT)

    • 교집합 연산
  3. Differecne (EXCEPT-SQL Server, MINUS-Oracle)

    • 차집합 연산
  4. Catesian Product (CROSS JOIN)

    • 교차곱 연산

나. 순수 관계 연산자

  1. Select (WHERE)

    • 테이블의 행 추출
  2. Project (SELECT)

    • 테이블의 열 추출
  3. Join (INNER JOIN, OUTER JOIN, NATURAL JOIN 등)

  4. Divide (현재 사용안함)

2. FROM 절 JOIN 형태

유형설명
INNER JOIN(내부조인)공통 존재 컬럼의 값이 같은 경우를 추출(WHERE 절 활용)
NATURAL JOININNER JOIN의 하위 개념으로 두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 EQUI JOIN 수행
OUTER JOIN(외부 조인)왼쪽, 오른쪽, 완전 외부 조인이 있음
CROSS JOIN(교차 조인)조인 조건이 없는 모든 데이터 조합을 추출하는 기법
SELF JOIN(셀프 조인)자기 자신에게 별칭을 지정한 후 다시 조인하는 기법
  • 조인 조건은 ON 절을 통해 기술

3. INNER JOIN

JOIN 조건에서 동일한 값이 있는 행만 반환한다.

SELECT A.컬럼1, B.컬럼1
FROM 테이블1 A [INNER] JOIN 테이블2 B
ON 조인조건
[WHERE 검색 조건];

-> 중복된 컬럼도 하나로 치지 않고 표현

4. NATURAL JOIN

두 테이블 간의 동일한 이름을 갖는 모든 컬럼에 대해 EQUI(=) JOIN 수행
NATURAL JOIN을 수행할 때는 조인 조건을 정의할 수 없다.

  • SQL Server 에서는 지원하지 않는다.
SELECT 컬럼1, 컬럼2,...
FROM 테이블1 NATURAL JOIN 테이블2;

-> 조인 조건을 명시하지 않고 공통된 컬럼으로 JOIN 처리
-> JOIN에 사용된 컬럼은 같은 데이터 유형이어야 함
-> 자연조인에서 사용된 열은 식별자를 가질 수 없음
-> 별도의 컬럼 순서를 지정하지 않으면 자연 조인의 기준이 되는 컬럼들이 다른 컬럼보다 먼저 출력
-> 조인에 사용된 같은 이름의 컬럼은 하나로 처리

5. USING 조건절

FROM 절에서 USING 조건절을 이용하여 같은 이름을 가진 컬럼 중에 원하는 컬럼에 대해서만 EQUI JOIN을 할 수 있다.

  • SQL Server에서는 지원하지 않음
  • JOIN 칼럼에 대해서 ALIAS나 테이블 이름과 같은 접두사 붙일 수 없음
  • JOIN 조건에 참여하지 않은 컬럼은 2개의 컬럼으로 표시
SELECT DEPTNO, DEPT.DNAME, DEPT.LOC, DEPT_TEMP.DNAME, DEPT_TEMP.LOC 
FROM    DEPT JOIN DEPT_TEMP 
USING   (DEPTNO);

6. ON 조건절

ON 조건절을 사용하면 컬럼명이 다르더라도 JOIN 조건을 사용할 수 있다.

  • JOIN 컬럼에 대해 ALIAS나 테이블 이름과 같은 접두사 사용할 수 있음

7. CROSS JOIN

SELECT 컬럼1, 컬럼2,...
FROM 테이블1 CROSS JOIN 테이블2;

8. OUTER JOIN

조인 조건에 동일한 값이 없는 행도 반환할 때 사용

  • LEFT OUTER JOIN : 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일 데이터를 추출
SELECT A.컬럼1, A.컬럼2, B.컬럼1, B.컬럼2, ...
FROM 테이블1 A LEFT [OUTER] JOIN 테이블2 B
ON 조인조건
[WHERE 검색조건];
  • RIGHT OUTER JOIN : 오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 동일 데이터 추출
  • FULL OUTER JOIN : 양쪽의 모든 데이터를 추출

9. INNER vs OUTER vs CROSS JOIN 비교

좋은 웹페이지 즐겨찾기