[MySQL] 7. SQL 고급

Bnow·2023년 10월 31일

조인

  1. INNER JOIN
    SELECT < 목록>
    FROM < 번째 테이블>
    	INNER JOIN < 번째 테이블>
        ON <조인될 조건>
    [WHERE 검색조건]
  • <첫 번째 테이블>, <두 번째 테이블> 순서를 바꾼 경우
    : 데이터는 같고, 표시 순서가 달라진다.

    결과 1)

    결과 2)

  • INNER JOIN 예시

    SELECT DISTINCT U.userID, U.name, U.addr
        FROM usertbl U
            INNER JOIN buytbl B
                ON B.userID = U.userID
       ORDER BY  U.userID;
  • 다대다 관계 : 세 개의 테이블 조인

  1. OUTER JOIN

    SELECT < 목록>
    FROM < 번째 테이블(LEFT)>
    <LEFT|RIGHT|FULL> OUTER JOIN < 번째 테이블(RIGHT)>
    	ON <조인될 조건>
    [WHERE 검색조건];
  • OUTER JOIN 예시

  • 세 개의 테이블인 경우
    INNER JOIN vs LEFT/LEFT JOIN vs LEFT/RIGHT JOIN
    1) INNER JOIN

    2) LEFT/LEFT JOIN

    3) LEFT/RIGHT JOIN

  • UNION

    SELECT S.stdName, S.addr, C.clubName, C.roomNo
        FROM stdtbl S
            LEFT OUTER JOIN stdclubtbl SC
                ON S.stdName = SC.stdName
            LEFT OUTER JOIN clubtbl C
                ON SC.clubName = C.clubName
    UNION   
    SELECT S.stdName, S.addr, C.clubName, C.roomNo
        FROM stdtbl S
            LEFT OUTER JOIN stdclubtbl SC
                ON S.stdName = SC.stdName
            RIGHT OUTER JOIN clubtbl C
                ON SC.clubName = C.clubName;

    결과)

  1. SELF JOIN
    자기 자신과 자기 자신이 조인한다는 의미

  2. UNION / UNION ALL / NOT IN / IN
    UNION은 두 쿼리의 결과를 행으로 합치는 것

    SELECT 문장1
        UNION [ALL]
    SELECT 문장2
profile
행복한 코딩

0개의 댓글