ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL Join (2) (완)
    생활코딩 DB 2021. 11. 12. 02:46

    ======================================

    @5.INNER JOIN

    앞에다 LEFT, INNER, OUTER 안적고 JOIN이라고 하면 INNER JOIN을 가리키는 것.

     

    양쪽 모두에만 존재하는 행만을 갖고 새롭게 표를 만드는 것

    --이게 NULL 얘기하는 거였다니..

     

    INNER JOIN엔 NULL행이 존재하지 않는다.

     

    *NULL == NULL : false --DB에서 NULL은 다른 NULL값과 같지 않다. 값이 없다고 생각하면 됨

     

    LEFT JOIN은 왼쪽 테이블을 기준으로 출력되기 때문에 NULL도 나와

    INNER JOIN은 엄격, 양쪽 다 존재하는 것에 대해

    코드는 다 똑같은데 INNER JOIN만 다름

    OUTER랑 비교해서, 왼 4행은 NULL이라 없어졌고, 오른쪽 3행은 쓰인적이 없어서 안나옴.

     

    INNER JOIN이 일반적으로 더 성능이 좋다. INNER JOIN으로 할 수 없는 경우는 LEFT JOIN을 써야함

     

    ======================================

    @6.FULL OUTER JOIN

    합집합 같은 것, LEFT JOIN과 RIGHT JOIN을 합한 것이다.

    위쪽은 LEFT JOIN 아래쪽은 RIGHT JOIN으로 딸려온다

    RIGHT JOIN때는 오른쪽 PK는 왼쪽 테이블의 애와 여러개가 맞을 수가 있는데 밑으로 하나씩 더 만들어준다

    이 다음 중복되는 결과를 지운다

    ▽그럼 안중복되는게 없을 것 같은데? 그냥 일반애들 끼리 INNER한 다음 각각 NULL 애들 밑으로 까는 느낌?

     

    많은 DB시스템에서 FULL OUTER JOIN구문을 지원하지 않습니다

    그럼? LEFT JOIN과 LIGHT JOIN한 결과를 합쳐서 중복을 제거하면 FULL OUTER JOIN이 됨.

    : UNION, 집합 명령어. UNION뒤에 DISTINCT라는 생략된 것. 병합할 때 중복된 걸 쳐버림

     

    저는 써본 적 없어요

     

    ======================================

    @7.EXCLUSIVE JOIN

    얘도 안씀, 저도 써본 적 없어요. 맨날 LEFT JOIN만 쓰다가 INNER JOIN이 성능이 좋단 얘기를 듣고 경우의 수 따져보다가 수업 만든 거랍니다.

    A에만 존재하는 것을 찾아내는 것.

     = B쪽에 있는 PK가 NULL인 애만 남기고 나머지는 안보이게 하면 됨!!

    6. 7. 는 전용 기능이 있다기 보다는 기존에 이미 갖고 있는 SQL의 개념들을 이용해서 얼마든지 조합해서 만들어낼 수 있는 결과

     

    ======================================

    @8.수업을 마치며

    (1)

    JOIN할 때 한쪽엔 있고, 한쪽엔 없고 같은 문제들이 있다. 이런걸 보완하다 보니 JOIN이 복잡한 형태를 갖게 됨.

    어떤 경우에 수가 있을지 벤다이어그램 등을 통해 따져보게 된다면 도움이 될 것.

     

     

    (2)

    JOIN의 기본적인 개념은 어떤 DB든 같지만, 이를 실현하는 방법은 DB제품마다 다르다. = 성능을 높이기 위해서 해야할 일도 다르다.

    JOIN이 의심될 땐

    EXPLAIN명령어로 병목지점을 찾아볼 수 있다

    (3)

    분해가 잘 돼 있어야 결합하기도 쉽다 : 모델링, 정규화(normalization)

    선배들이 어렵게 어렵게 만들어놓은 좋은 테이블을 만들기 위한 논의들

    '생활코딩 DB' 카테고리의 다른 글

    관계형 데이터 모델링 (2)  (0) 2021.11.12
    관계형 데이터 모델링 (1)  (0) 2021.11.12
    SQL Join (1) (완)  (0) 2021.11.07
    DB2 - Oracle (2)Join (완)  (0) 2021.09.03
    DB2 - Oracle (1)Entry, CRUD (완)  (0) 2021.09.03
Designed by Tistory.