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 |