22.05.06_SQL_JOIN, 서브쿼리

Saparian·2022년 5월 6일
0

오늘의배움

목록 보기
52/53

SQLD 이론 준비를 위해서 오늘 배운 내용 간단히만 정리해보자

JOIN

  • 크로스조인(Cross JOIN) : 가능한 모든 행 조인
  • 등가조인(Equi JOIN) : 조건이 일치하는 결과만 출력함 -> inner join
  • 비등가조인(Non Equi JOIN) : 조건이 일치하지 않는 결과 출력
  • 외부조인(Outer JOIN) : 양쪽 테이블의 한쪽만 조건이 일치해도 출력 (LEFT JOIN, RIGHT JOIN)
  • 자체 조인(Self JOIN) : 자기 자신 테이블 조인

표준(ANSI) 조인방식은 oracle에서 하던 방식과 다르다

  • , => JOIN

  • WHERE => ON

    시험에 잘 나오는 내용
    조인시 필요한 조건식의 최소 개수 : 조인 테이블 개수에서 하나 뺀 값

  • LEFT JOIN : 왼쪽 테이블 데이터가 다 출력 (왼쪽 테이블을 기준으로 다른 테이블을 가져다 붙임)

  • RIGHT JOIN : 오른쪽 테이블 데이터가 다 출력 (오른쪽 테이블을 기준으로 다른 테이블을 가져다 붙임)

    두가지 전부 기억하면 헷갈리게 되니까 LEFT JOIN만 기억하고 RIGHT JOIN은 반대라고 생각하자.

CONNECT BY : 계층형 / 트리구조

CONNECT BY : 계층형 / 트리구조에서 사용함, 오라클에서만 사용함

그러나 시험에서 자주 나옴

기본 구조

start with : 트리 맨 위쪽, 트리구조의 시작부분
connect by prior : 조인 조건

SELECT
    empno, mgr, ename
FROM emp
START WiTH mgr IS NULL      -- 시작 조건
CONNECT BY PRIOR empno = mgr; -- 조인 조건

추가구조

SELECT
    level,                  -- 계층형태를 알려줌
    LPAD(' ', 4*(LEVEL -1)) || empno,   -- 계층형태를 눈으로 보기 쉽게 하기 위함
    mgr, ename
FROM emp
START WiTH mgr IS NULL      -- 시작 조건
CONNECT BY PRIOR empno = mgr; -- 조인 조건

서브쿼리

  • 서브쿼리 : SELECT문을 괄호로 감싼 것
    • 단일행 서브쿼리 (=, !=, <, > ...) : 반환값이 1 row인 쿼리
    • 다중행 서브쿼리 (IN, NOT IN, ANY, SOME, ALL) : 반환값이 1 row 이상인 쿼리

서브쿼리가 사용 가능한 위치

  • WHERE 조건문
  • 컬럼 (스칼라 서브쿼리)
  • HAVING 조건문
  • FROM 뒤 (inline VIEW)

스칼라 서브쿼리

  • SELECT절에 오는 서브쿼리로 단일행 형태이며 반드시 하나의 결과만 반환해야함

뷰 (VIEW)

  • 가상의 (논리적) 테이블
  • INLINE VIEW (코드 안에 뷰)

0개의 댓글