1. STANDARD SQL 개요
ANSI/ISO 표준 SQL의 기능은 다음 내용을 포함
STANDARD JOIN
기능 추가
(CROSS
,OUTER JOIN
등 새로운FROM
절JOIN
기능들)- SCALAR SUBQUERY, TOP-N QUERY 등의 새로운 SUBQUERY 기능들
ROLLUP
,CUBE
,GROUPING SETS
등의 새로운 리포팅 기능WINDOW_FUNCTION
같은 새로운 개념의 분석 기능들
1.1. 일반 집합 연산자
일반 집합 연산자를 현재의 SQL과 비교
- UNION 연산은
UNION
기능으로.
: 수학적 합집합 제공.
(이를 위해 공통 교집합 중복 없애는 사전 작업.) - INTERSECTION 연산은
INTERSECT
기능으로.
: 수학적 교집합. - DIFFERENCE 연산은
EXPECT
(Oracle은MINUS
) 기능으로.
: 수학적 차집합.
첫 번째 집합에서 두 번째 집합과의 공통집합 제외한 부분.
Oracle은MINUS
, 이외는EXCEPT
사용. - PRODUCT 연산은
CROSS JOIN
기능으로.
:JOIN
조건이 없는 경우 생길 수 있는 모든 데이터의 조합.
양쪽 집합의 $M * N$ 건의 데이터 조합 발생.
1.2. 순수 관계 연산자
관계형 데이터베이스 구현하기 위해 새롭게 만들어진 연산
- SELECT 연산은
WHERE
절로 구현 - PROJECT 연산은
SELECT
절로 구현
:SELECT
절의 칼럼 선택 기능 - (NATURE) JOIN 연산은 다양한
JOIN
기능으로 구현
:WHERE
절의INNER JOIN
조건과 함께
FROM
절의NATURAL JOIN
,INNER JOIN
,OUTER JOIN
,
USING
조건절,ON
조건절 등 - DIVIDE 연산은 현재 사용 X
1.3. FROM
절 JOIN
형태
ANSI/ISO에서 표시하는 FROM
절의 JOIN
형태
INNER JOIN
:WHERE
절에서부터 사용하던JOIN
의DEFAULT
옵션.
JOIN
조건에서 동일한 값이 있는 행만 반환.
CROSS JOIN
,OUTER JOIN
과는 같이 사용불가.NATURAL JOIN
: 두 테이블 간 동일한 이름 갖는 모든 칼럼들에 대해
EQUI(=) JOIN 수행.
이 경우엔,USING
,ON
,WHERE
절에서
JOIN
조건 정의 불가능.
JOIN
에 사용된 칼럼들은 같은 데이터 유형 필수.
ALIAS
나 테이블명과 같은 접두사 붙일 수 없음.USING
조건절
:FROM
절의USING
조건절 이용 시
같은 이름 가진 칼럼들 중 원하는 칼럼에 대해서만
선택적으로EQUI JOIN
가능.ON
조건절
:JOIN
서술부(ON
)와JOIN
서술부(WHERE
) 분리하여 이해 쉬움.
칼럼명 다르더라도JOIN
조건 사용 가능.
임의의JOIN
조건 지정, 이름 다른 칼럼명을JOIN
조건으로 사용,
JOIN
칼럼 명시하기 위해서는ON
사용.
ALIAS
나 테이블 명과 같은 접두사 사용하여
SELECT
에 사용되는 칼럼을 명확히 지정 필요.CROSS JOIN
: 일반 집합 연산자의 PRODUCT 개념으로
테이블 간JOIN
조건 없는 경우 생길 수 있는
모든 데이터의 조합.
결과 => 양쪽 집합의 \(M \times N\) 건의 데이터 조합 발생OUTER JOIN
:INNER JOIN
과 대비됨.
JOIN
조건에서 동일한 값 없는 행도 반환 시 사용 가능.
OUTER JOIN
역시JOIN
조건을FROM
절에서 정의하므로
USING
조건절이나ON
조건절 사용 필수.
테이블 간의 JOIN
조건을 FROM
절에서 명시적으로 정의 가능.