ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JOIN 관련
    @ 17. 1 ~ 18/DB 2018. 2. 26. 23:44

    일대다 관계를 해결하기 위해 사용.

    일대다 관계는 보통 일(기본키 pk)와 다(외래키)를 활용한다.


    INNER JOIN

    가장 많이 사용되는 조인으로 대개의 업무에서 사용된다. 일반적인 조인이라고 보면된다.

    사용되는 예

    구매 테이블이 있고 여기에는 물건을 구매한 사용자의 아이디와 물건 등의 정보만 있다.

    그런데 물건을 배송하기 위해 회원의 주소를 알아야하는데 회원의 주소정보는 회원 테이블에 있다.

    이때 결합하는것이 INNER JOIN이다

    SELECT < 열 목록 >

    FROM <첫 번째 테이블>
        INNER JOIN <두번째 테이블>

        ON <조인될 조건>

    [WHERE 검색조건]


    SELECT * 

    FROM buyTbl A

    INNER JOIN userTbl B

    ON buyTbl.userId = userTbl.userId

    WHERE buyTbl.userId = 'BBB'


    위에 A, B는 별칭이다. 테이블 나오는 이름 뒤에 사용하면된다.


    만약 3개의 테이블을 조인하는 경우가 있다.

    예를들어 2개를 조인하려고 테이블을 봤는데 각각 테이블이 다대다 테이블이다. 이럴때 두 테이블 사이에 연결 테이블 둬서 연결 테이블과

    두 테이블이 일대다를 맺도록 구성해야한다.

    SELECT 

    FROM

    INNER JOIN

    ON

    INNER JOIN

    ON



    OUTER JOIN

    INNER JOIN이 양쪽 테이블에 모두 내용이 있는 것만 조인되는 방식이라면, 

    OUTER JOIN은 

    1. 양쪽에 내용이 있으면 당연히 하고

    2. 한쪽에만 내용이 있어도 그결과가 표시된다.


    SELECT<열목록>

    FROM< 첫번째 테이블(이것이 LEFT테이블)>

    <LEFT | RIGHT | FULL> OUTER JOIN <두번째 테이블(이것이 RIGHT 테이블)>

    ON<조인될 조건>

    [WHERE 검색조건]


    SELECT U.Userid

    FROM userTbl U

    LEFT OUTER JOIN buyTbl B

    ON U.userid = B.userId

    ORDER BY U.userId


    LEFT OUTER JOINT이란 "왼쪽 테이블(userTbl)의 것은 모두 출력되어야 한다" 정도로 해석하면된다.

    위와 동일한 결과지만 RIGHT OUTER JOIN으로 하려면?

    SELECT U.Userid

    FROM buyTbl B

    RIGHT OUTER JOIN userTbl U

    ON U.userid = B.userId

    ORDER BY U.userId


    테이블의 순서만 변경되었다.


    FULL은 LEFT와 RIGHT를 둘다 합친것. 활용도는 낮다. 양쪽 모두에 조건이 일치하지 않는 것을 모두 출력하는것.


    '@ 17. 1 ~ 18 > DB' 카테고리의 다른 글

    [MySQL] 조인 (2)  (0) 2018.06.28
    [MySQL] 테이블 조인 (1)  (0) 2018.06.26
    인덱스 관련  (0) 2018.02.27
    각 키 설명  (0) 2018.02.27
    ACID 그리고 CAP개념  (1) 2017.09.07
Designed by Tistory.