JOIN
등가조인(교집합) -테이블간에 일치하는 것을 조인, 해시조인은 등가조인만 사용가능한 방법
INNER JOIN
SELECT * FROM emp ON emp.deptno=dept.deptno;
INTERSEC 연산
- 두개 테이블의 교집합 조회
SELECT deptno FROM emp
INTERSECT
SELECT deptno FROM dept;
OUTER JOIN
-두개의 테이블간 교집합을 조회하고 한쪽 테이블에만 있는 데이터도 포함
LEFT OUTER JOIN , RIGHT OUTER JOIN ,, FULL OUTER JOIN
SELECT * FROM emp
WHERE emp.deptno (+)= dept.deptno; --right outer join (oracle)
SELECT * FROM dept LEFT OUTER JOIN emp ON emp.deptno = dept.deptno;
CROSS JOIN
-조인 조건없이 두개를 하나로 조인, 카테시안 곱 발생. (e.i. 14 테이블과 4개 테이블 = 56 행)
UNION
-두개의 테이블의 칼럼수, 칼럼 데이터형식 모두 일치 해야함
-합치면서 중복된 데이터 제거
-정렬 과정 발생
UNION ALL
-중복제거 하지않음, 정렬 유발하지않음
MINUS (차집합) -앞에있고 뒤에없는 집합 조회
SELECT deptno FROM dept
MINUS
SELECT deptno FROM emp;
계층형 조회(connect by)
-트리 형태의 구조로 질의 수행 하는것
SELECT max(level) --최대 계층의 수
FROM limbest.emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno=mgr; --root노드로부터 하위 노그의 질의 수행
-계층구조에서 마지막 leaf node의 계층값 구함
CONNECT BY 키워드
LEVEL - 검색항목의 깊이. 계층구조에서 최상위 레벨은 1
CONNECT_BY_ROOT - 계층구조에서 최상위 값
CONNECT_BY_ISLEAF - 최하위 값
SYS_CONNECT_BY_PATH - 계층구조의 전체 전개경로 표시
NOCYCLE - 순환구조가 발생된 지점까지만 전개
CONNECT_BY_USCYCLE - 순환구조 발생지점 표시
서브쿼리
-FROM에 SELECT 문 사용 : 인라인뷰
-SELECT문에 subquery를 사용 : 스칼라 서브쿼리
-WHERE 구에 SELECT문 사용 : 서브쿼리