티스토리 뷰
1. STANDARD SQL 개요
- 표준 SQL의 기능
STANDARD JOIN 끼능 추가(CROSS, OUTER JOIN 등 새로운 FROM 절 JOIN 기능들)
SCALAR SUBQUERY, TOP-N QUERY 등의 새로운 SUBQUERY 기능들
ROLLUP, CUBE, GROUPING SETS 등의 새로운 리포팅 기능
WINDOW FUNCTION 같은 새로운 개념의 분석 기능들
가. 일반 집합 연산자
UNION 연산은 UNION 기능
INTERSECTION 연산은 INTERSECT 기능
DIFFERENCE 연산은 EXCEPT(Oracle은 MINUS) 기능
PRODUCT 연산은 CROSS JOIN 기능
나. 순수 관계 연산자
SELECT 연산은 WHERE 절로 구현
PROJECT 연산은 SELECT 절로 구현
(NATURAL) JOIN 연산은 다양한 JOIN 기능으로 구현
DIVIDE 연산은 현재 사용되지 않는다.
2. FROM 절 JOIN 형태
-
INNER JOIN
기존 WHERE 절의 검색 조건과 JOIN 조건을
그대로 사용할 수 있으며
추가된 선택 기능으로 JOIN 조건을 FROM절에서
명시적으로 정의할 수 있게 되었다.
-
NATURAL JOIN
INNER JOIN의 하위 개념으로
두 테이블간의 동일한 이름을 갖는 모든 칼럼드에 EQUL JOIN을 수행한다.
- USING 조건절
- ON 조건절
- CROSS JOIN
- OUTER JOIN
3. INNER JOIN
-
INNER JOIN이란?
JOIN 조건에서 동일한 값이 있는 행만 반환
FROM 절에서 정의
USING, ON 조건절을 필수적으로 사용해야 한다.
4. NATURAL JOIN
-
NATURAL JOIN이란?
두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 대해 EQUL(=) JOIN을 수행
NATURAL JOIN이 명시되면 WHERE 절에서
JOIN 조건을 정의할 수 없다. (USING, ON 조건절)
SQL Server에서는 지원하지 않는다.
5. USING 조건절
-
USING 조건절이란?
FROM 절에 USING 조건절을 이용하여 같은 이름을 가진 칼럼중에 원하는 칼럼에 대해서만 EQUL JOIN을 할 수 있다.
(NATURAL JOIN에서는 모든 일치되는 칼럼을 조인하지만 USING은 원하는 칼럼만 JOIN한다.)
SQL Server에서는 지원하지 않는다.
JOIN 칼럼에 대해서 ALIAS나 테이블 이름과 같은 접두사를 붙일 수 없다.
6. ON조건절
-
ON 조건절 특징
ON 조건절을 사용하면 칼럼명이 다르더라도 JOIN 조건을 사용할 수 있다.
임의의 JOIN 조건을 지정할 수 있다.
이름이 다른 칼럼명을 JOIN 조건으로 사용할 수 있다.
JOIN 칼럼명을 명시할 수 있다.
ALIAS나 테이블 명과 같은 접두사를 사용할 수 있다.
가. WHERE절과의 혼용
SELECT E.ENAME, E.DEPTNO, D.DEPTNO, D.DNAME
FROM EMP E JOIN DEPT D
ON (E.DEPTNO = D.DEPTNO)
WHERE E.DEPTNO = 30;
나. ON 조건절 + 데이터 검증 조건 추가
ON 조건절에 데이터 검색 조건을 추가할 수 있다.
검색 조건 목적인 경우는 WHERE 절을 사용할 것을 권고한다.
(다만, 아우터 조인에서 조인의 대상을 제한하기 위한 목적으로 사용되는 추가 조건의 경우 ON절에 표기한다.)
다. ON 조건절 예제
SELECT TEAM_NAME ,
TEAM.STADIUM_ID, STADIUM_NAME
FROM TEAM JOIN STADIUM
ON TEAM.STADIUM_ID = STADIUM.STADIUM_ID
ORDER BY STADIUM_ID
라. 다중 테이블 JOIN
7. CROSS JOIN
- 일반 집합 연산자의 PRODUCT의 개념으로 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 말한다.
- 두 개의 테이블에 대한 CARTESIAN PRODUCT 또는 CROSS PRODUCT와 같은 표현으로 결과는 양쪽 집합의 M*N건의 데이터 조합이 발생한다.
8. OUTER JOIN
-
OUTER JOIN 이란?
JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용
가. LEFT OUTER JOIN
조인 수행시 좌측 테이블에서 데이터를 먼저 읽은 후, 우측 테이블에서 JOIN 대상을 읽어 온다.
즉, 좌측 테이블이 기준이 된다.
나. RIGHT OUTER JOIN
조인 수행시 우측 테이블이 기준이 되어 결과를 생성한다.
다. FULL OUTER JOIN
조인되는 모든 테이블의 데이터를 읽어 JOIN한다.
RIGHT OUTER JOIN과 LEFT OUTER JOIN의 결과를 합집합으로 처리한 결과와 동일하다.
9. INNER vs OUTER vs CROSS JOIN 비교
'자격증 > SQLD' 카테고리의 다른 글
SQLD - SQL 활용 [계층형 질의와 셀프 조인] (0) | 2017.08.14 |
---|---|
SQLD - SQL 활용 [집합 연산자] (0) | 2017.08.14 |
SQLD - SQL 기본 [조인(JOIN)] (0) | 2017.08.11 |
SQLD - SQL 기본 [ORDER BY 절] (0) | 2017.08.07 |
SQLD - SQL 기본 [GROUP BY, HAVING 절] (0) | 2017.08.07 |