-
Part 4. DQL - SELECT 2: JOIN, SET 연산자, SUBQUERY카테고리 없음 2020. 6. 18. 09:28
Chapter1 JOIN-JOIN (조인문) : 여러 테이블의 레코드를 조합하여 하와이인 열을 표현한 것 ▶ 2개 이상의 테이블에서 연관성이 있는 데이터를 따로 분류하고, 새로운 가상 테이블을 이용하여 출력-JOIN시 연결에 사용하는 두 테이블의 컬럼명이 다른 경우 Oracle 전용구문
ANSI 그대로 구문
JOIN시 연결에 사용할 두 테이블의 컬럼명이 같을 경우 Oracle 전용구문
ANSI 보통구문 USING 사용
JOIN의 종류
>
- INNERJOIN(내부조인) : 테이블A와 테이블B모드의 조건구문에 일치하는 데이터만 반환 ▶ 일반적 사용, 교집합 ▶ SELECT
INNERJOIN ON<조건구문>;-OUTERJOIN(외부조인) : 합집합 1) INNNNNNERJOIN : 테이블A와 테이블BOM 모드구문에 일치하는 데이터만 반환조건구문 ▶ FINT> FINT> 모드F 3) RIGHTOUTER JOIN : 테이블 B를 모두 반환하고, 테이블 A의 조건구문에 일치하는 데이터만 반환한다.
4) FULLOUTER JOIN : 테이블 A, B 모두 반환
비등가조이다 NON-EQUIJOIN: 지정한 컬럼 값이 일치하는 것이 아니라 값 범위에 포함된 행을 연속하는 방식 ='등가연산자가 아닌 다른연산자를 사용
- SELF JOIN : 같은 테이블을 조인, 즉 자기 자신과 조인을 연결하는 방식
- 다중 JOIN : 여러 개의 조인문을 한 번에 사용할 수 있어.
Chapter2 SET 연산자 - 집합 연산자(Set Operator) : 둘 이상의 테이블에서 조인을 사용하지 않고 관련 데이터를 조회하는 방법 여러 개의 질의 결과를 연결하여 하나가 아닌 접속하는 방식-집합 연산자 조건 ▶ SELECT절의 "컬럼수가 동일"해야 합니다. 해야하는 SELECT절의 동일 위치에 존재하는 컬럼의 “데이터 타입이 상호교환 가능”해야 하는 1) 해야하는 UNION과 UNIONALL은 복수의 질의 결과를 1개의 쿼리로 결합한다.
2) UNIONALL -UNION과의차이는중복을포함하여
3) INTERSECT: 복수의 SELECT 결과로부터 공통된 부분만 결과로 추출수행결과에 대한 교집합
4) MINUS : 선행 SELECT 결과에서 다음 SELECT 결과와 겹치는 부분을 제외한 나머지 부분만 추출
Chapter 3. SUBQUERY - 서브 쿼리(SubQuery) : 아래 자신의 SQL문 안에 포함된 역시 다른 SQL문의 미확인 조건에 뒷받침한 값을 검색한 select 문장을 작성하는데 유리하다.메인 쿼리가 서브 쿼리를 포함한 종속적 관계 서브 쿼리는 바르게 소괄호로 묶어야 한다 서브 쿼리는 연산자 오른쪽에 위치해 있어야 한다 서브 쿼리 내에서 ORDERBY 문법은 지원되지 않는다- 서브 쿼리 유형 1) 단일행수(서브에리 복수 참조)
2) 다중행 서브에리 : 서브에리 조회 결과값(행, 튜플)이 여러개일 때 ▶ 다중행 서브에리 전 일반 비교 연산자 사용 불가 ▶ 사용가능 연산자 : IN/NOTIN, ANY, ALL, EXIST
인라인뷰 (FROM절 서브 쿼리) ⇒ FROM절에 서브 쿼리를 사용한 것
WITH: 서브쿼리에 이름을 붙이고 인라인뷰에서 사용할 경우 서브에리 이름으로 FROM절에 사용 가능, 같은 서브 쿼리가 여러 번 사용될 경우 중복 작성을 피할 수 있고 실행 속도도 빨라진다는 장점이 있다.
Chapter4 기타 - RANK() OVER : 중복 순위는 해당 개수만 건너뛰고 반환 1, 2, 3, 4, 5, 6, 8, 9...
- DENSE_RANK() OVER : 중복순위와 상관없이 순차적으로 반환(1, 2, 3, 4, 5, 6, 7, 8, 9)…
- ROW_NUMBER ( ) OVER : 중복 상관없이 순서대로 반납 ▶ 중복이 있어도 등수대로 표시