CROSS JOIN
 - 두 테이블 상호간의 조합을 생성한다.
 - 두 테이블 사이의 카티시안 곱과 동일하다.

 - ex)

1
2
3
4
SELECT 
    e.ename,
    d.dname
FROM emp e CROSS JOIN dept d;
 

 

 

 NATURAL JOIN
 - 두 테이블에서 동일한 이름을 가진 모든 컬럼을 기준으로 JOIN한다.
 - 두 테이블의 일치하는 모든 컬럼을 대상으로 같은 값을 가진 행을 선택한다.
 - JOIN 조건으로 사용한 컬럼 앞에는 테이블 이름이나 테이블 별칭을 명시 할 수 없다.
 - WHERE 절을 사용하여 조건을 추가할 수 있다.

 - ex)

1
2
3
4
5
SELECT
    e.ename,
    deptno,
    d.dname
FROM emp e NATURAL JOIN dept d;
 

 

 

 JOIN-USING
 - USING절을 사용하여 특정 컬럼을 지정하여 JOIN한다.
 - USING절에 참조되는 컬럼은 SQL문 어디에서도 테이블 이름이나 별칭을 가질 수 없다.
 - NATURAL JOIN과 USING절은 서로 배타적으로 사용한다.

 - ex)

1
2
3
4
5
6
SELECT
    e.ename,
    deptno,
    d.dname
FROM emp e JOIN dept d USING(deptno)
ORDER BY e.ename DESC;
 

 

 

 JOIN-ON

 - ex)

1
2
3
4
5
6
7
SELECT
    e.ename,
    e.sal,
    s.grade
FROM emp e JOIN salgrade s
ON(e.sal BETWEEN s.losal AND s.hisal)
ORDER BY e.sal DESC;
 

 

 

 INNER JOIN
 - ANSI JOIN에서 두 테이블을 조인하여 일치하는 열만 반환하는 JOIN이다.

 - ex)

1
2
3
4
5
6
7
SELECT
    d.dname,
    d.loc_code,
    l.loc_code,
    l.city
FROM dept d INNER JOIN locations l
ON d.loc_code = l.loc_code;
 

 


 LEFT OUTER JOIN(RIGHT OUTRT JOIN) 
 - 두 테이블을 JOIN해서 내부 JOIN의 결과와 함께 일치하지 않는 왼쪽(오른쪽) 테이블의 행을 반환하는 JOIN이다.

 - ex)

1
2
3
4
5
6
SELECT
    d.dname,
    d.loc_code,
    l.city
FROM dept d LEFT OUTER JOIN locations l
ON d.loc_code = l.loc_code;
 

  

 

 FULL OUTER JOIN
 - 두 테이블을 JOIN해서 내부 JOIN의 결과와 함께 왼쪽, 오른쪽 JOIN의 결과를 모두 반환하는 JOIN이다.

 - ex)

1
2
3
4
5
6
7
SELECT
    d.dname,
    d.loc_code,
    l.loc_code,
    l.city
FROM dept d FULL OUTER JOIN locations l
ON d.loc_code = l.loc_code;
 

 

 

 

 SET 연산자
 - 두 개 이상의 질의 결과를 하나의 결과로 통합한다.
 

 - UNION : 각 쿼리 결과의 합집합. A + B + C
 - UNOIN ALL : 각 쿼리 결과의 합집합에 공통부분을 더한다. A + B + B + C
 - INTERSECT : 각 쿼리 결과의 교집합. B
 - MINUS : 각 쿼리 결과의 차집합. A

 

 

 SET 연산자 동작
 - SET 연산자를 포함하는 질의를 복합 질의라고 한다.
 - SET 연산자는 두 개 이상의 질의 결과를 하나의 결과로 통합한다.
 - 모든 SET 연산자는 같은 우선순위를 가진다.
 - 사용하는 질의의 평가 순서를 명시적으로 표현하기 위해 괄호를 사용한다.

 

 

 SET 연산자 사용
 - SELECT 목록에 있는 표현식의 개수와 데이터 유형이 서로 일치해야 한다.
 - 첫 번째 질의의 열 이름이 결과에 표시된다.
 - UNION ALL을 제외한 다른 연산자 사용 시 중복 행이 자동으로 제거된다.
 - UNION ALL을 제외한 다른 연산자의 출력은 기본적으로 오름차순으로 정렬된다.
 - ORDER BY 절에서 사용된 열 이름이나 별칭은 첫 번째 SELECT 목록에 있어야 한다.
 - SET 연산자는 서브쿼리에서도 사용할 수 있다.

 

 

 

 오늘의 한 줄 : 조인 했을 때 모든 테이블의 경우의 수가 다 나오는 것에도 이름이 있었구나


 

 

 

 

 출처 : SK 동반성장 아카데미, 비전공자를 위한 SQL 입문, 「조인 문장 및 집합 연산자」 

'공부 > SQL' 카테고리의 다른 글

[SQL] 인라인뷰와 스칼라 서브쿼리  (0) 2019.12.05
[SQL] 서브 쿼리  (0) 2019.12.04
[SQL] 조인 처리과정 이해 및 기본 조인 문장  (0) 2019.12.03
[SQL] 윈도우 함수  (0) 2019.12.03
[SQL] 그룹 함수  (0) 2019.12.03

+ Recent posts