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 절에서 명시적으로 정의 가능.