1. STANSARD SQL 개요
새로운 기능을 포함
- STANDARD JOIN 기능 추가 (CROSS, OUTER JOIN 등 새로운 FROM 절 JOIN 기능들)
- SCALAR SUBQUERY, TOP-N QUERY 등의 새로운 SUBQUERY 기능들
- ROLLUP, CUBE, GROUPING SETS 등의 새로운 리포팅 기능
- WINDOW FUNCTION 같은 새로운 개념의 분석 기능들
가. 일반 집합 연산자
E.F.Codd박사가 처음으로 개발
- UNION 연산 → UNION 기능
수학적 합집합 제공, 공통의 교집합 중복을 없애기 위한 작업
UNION ALL은 공통 집합을 중복해서 그대로 보여줌, 정렬작업이 일어나지 않아서 사용 권고함
- INTERSECTION 연산 → INTERSECT 기능
수학적 교집합
- DIFFRENCE 연산 → EXCEPT(ORACLE은 MINUS)기능
수학적 차집합, 첫번째 집합에서 두번째 집합과의 공통집합을 제외한 부분
- PRODUCT 연산 → CROSS JOIN 기능
곱집합, 생길수있는 모든 데이터 조합으로 양 집합의 M*N건, CARTESIAN PRODUCT로도 불림
나. 순수 관계 연산자
- SELECT 연산 → WHRER절로 구현 SELECT연산과 절은 다른 의미
- PROJECT 연산 → SELECT절로 구현 칼럼 선택기능 수현
- (NATURAL) JOIN 연산 → 다양한 JOIN 기능으로 구현 INNER, OUTER, USING, ON 등 다양하게 발전
- DIVIDE연산 사용되지 않음
관계형 데이터 베이스
요구사항분석, 개념적 데이터 모델링 → 논리적 데이터 모델링 → 물리적 데이터 모델링
엔티티확정 및 정규화 과정, M:M 관계 분해하는 절타
특히, 정규화과정은 데이터 정합성과 데이터 저장공간 절약을 위해 엔티티 최대한 분리하는 작업으로 3차정규형이나 보이스코드 정규화까지 진행
정규화 이후 하나의 주제에 관련한 여러 엔티티가 나눠지고 그것들은 연결하기 위해 JOIN 작업이 이루어짐
2. FROM 절 JOIN 형태
- INNER JOIN
- NATURAL JOIN : INNER JOIN의 하위개념, 동일한 이름을 갖는 모든 칼럼에 대해 EQUI조인 수행
- USING 조건절 : 동일한 칼럼명
- ON 조건절 : WHERE 조인 조건처럼 ON 조건절로 분리하여 표시, 명시적으로 조건 구분할 수 있고 컬럼명이 다르더라도 사용가능
- CROSS JOIN
- OUTER JOIN
3. INNER JOIN
내부 JOIN, 동일한 값이 있는 행으로만 반환
USING 조건절, ON 조건절을 사용
예제) SELECT EMP.DEPTNO, EMPNO, ENAME, DNAME
FROM EMP JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
4. NATURAL JOIN
두 테이블간 동일한 이름이 갖는 모든 칼럼에 대해 EQUI JOIN을 수행
USING/ON/WHERE 조건절에서 정의 불가능, SQL SERVER 사용 불가
동일한 칼럼 데이터가 같은 타입이여야하고 별명이나 접두사를 붙일 수 없음, 도메인과 칼럼명이 동일해야함
5. USING 조건절
FROM 절의 USING 조건절을 이용하면 같은 이름을 가진 칼럼들 중에서 원하는 칼럼에 대해서만 EQUI JOIN 할수 있음,
SQL SERVER 사용 불가
별명과 접두사를 붙일 수 없음
6. ON 조건절
WHERE 조건절과 불리한 JOIN 조건절, 칼럼명이 달라도 사용가능
임의의 JOIN 조건을 지정하거나 이름이 다른 칼럼명을 JOIN하거나 칼럼을 명시하기 위해 사용
별명이나 접두사를 사용하여 SELECT절에 사용되는 칼럼 명확하게 지정 필요
가독성이 떨어지는 단점
가. WHERE 절과의 혼용
나. ON 조건절 + 데이터 검증 조건 추가
: ON 조건절 안에서도 데이터 검색 조건 추가가능 단, OUTER JOIN에서 추가 조건 경우는 ON 절에 표기
다. ON 조건절 예제
라. 다중 테이블 JOIN
7. CROSS JOIN
CARTESIAN PRODUCT 또는 CROSS PRODUCT로 표현, M*N건으로 조합, 모든 데이터 조합을 말함
WHERE절에 조인조건 추가 가능하지만 INNER JOIN과 같은 효과이기 때문에 사용하는 의미가 없음
8. OUTER JOIN
동일한 값이 없는 행도 반환할 때 사용
ORACLE은 칼럼 뒤에 (+) 표시
단, WHERE절 검색조건의 불분확한 단점, IN이나 OR연산자 사용시 에러, (+) 누락 칼럼 존재시 오류 발생, FULL OUTER JOIN 미지원
가. LEFT OUTER JOIN
왼쪽에 있는 값은 동일한 조인 값이외에도 전부 출력, LEFT JOIN 으로도 생략해서 사용 가능
나. RIGHT OUTER JOIN
오른쪽 있는 값은 동일한 조인 값이외에도 전부 출력, RIGHT JOIN 으로 생략해서 사용 가능
다. FULL OUTER JOIN
왼, 오른쪽 데이터를 모두 읽어 결과 생성, LEFT와 RIGHT의 합집합 결과랑 동일
단, UNION ALL이 아닌 UNION 기능과 같으므로 중복된 데이터는 삭제
FULL JOIN으로 생략해서 사용 가능
9. INNER VS. OUTER VS. CROSS JOIN 비교
'자격증 공방 > SQLD' 카테고리의 다른 글
제 4-3절 계층형 질의와 셀프 조인 (0) | 2018.07.11 |
---|---|
제 4-2절 집합 연산자 (SET OPERATOR) (0) | 2018.07.11 |
제 3-9절 조인(JOIN) (0) | 2018.07.07 |
제 3-8절 ORDER BY절 (0) | 2018.07.07 |
제 3-7절 GROUP BY, HAVING 절 (0) | 2018.07.07 |