본문 바로가기

카테고리 없음

SQLD 요약 정리 (4)

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문 사용 : 서브쿼리