SQL JOIN

데이터베이스에서 두 개 이상의 테이블을 연결하여 하나의 결과 집합으로 합치는 방법을 말한다. 데이터베이스에서 정보는 여러 테이블에 분산되어 저장될 수 있으며, 이러한 경우에 JOIN을 사용하여 필요한 정보를 검색하고 결합할 수 있다.

  • 예시
    SELECT I.INGREDIENT_TYPE, SUM(F.TOTAL_ORDER) TOTAL_ORDER
    FROM ICECREAM_INFO AS I, FIRST_HALF AS F
    WHERE I.FLAVOR = F.FLAVOR
    GROUP BY I.INGREDIENT_TYPE
    ORDER BY TOTAL_ORDER ASC

WHERE절을 통해서 JOIN이 가능하다.

SELECT B.BOOK_ID, A.AUTHOR_NAME, DATE_FORMAT(B.PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK AS B JOIN AUTHOR AS A ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE B.CATEGORY LIKE '경제'
ORDER BY PUBLISHED_DATE

1. INNDER JOIN = JOIN = CROSS JOIN

= JOIN, CROSS JOIN 모두 같은 의미이다.
A테이블과 B테이블의 일치하는 내용만 출력한다.
A TABLE JOIN B TABLE ON 조건 형식으로 작성

  • 예시
    SELECT B.BOOK_ID, A.AUTHOR_NAME
    FROM BOOK AS B JOIN AUTHOR AS A
    ON B.AUTHOR_ID = A.AUTHOR_ID

2. LEFT JOIN (LEFT OUTER JOIN)

왼쪽 테이블(첫 번째 테이블)의 모든 레코드를 포함하고, 오른쪽 테이블(두 번째 테이블)과 공통 열의 값이 일치하는 경우 오른쪽 테이블의 해당 레코드를 추가하여 결과를 형성한다.

  • 예시
    SELECT CUSTOMERS.CUSTOMERID, CUSTOMERS.CUSTOMERNAME, CUSTOMERS.COUNTRY, ORDERS.ORDERID, ORDERS.ORDERDATE
    FROM CUSTOMERS
    LEFT JOIN ORDERS ON CUSTOMERS.CUSTOMERID = ORDERS.CUSTOMERID;

3. RIGHT JOIN (RIGHT OUTER JOIN)

왼쪽 테이블과 오른쪽 테이블의 역할이 LEFT JOIN과 반대로 됩니다. 오른쪽 테이블의 모든 레코드를 포함하고, 왼쪽 테이블과 공통 열의 값이 일치하는 경우 왼쪽 테이블의 해당 레코드를 추가하여 결과를 형성합니다.

  • 예시
    SELECT CUSTOMERS.CUSTOMERID, CUSTOMERS.CUSTOMERNAME, CUSTOMERS.COUNTRY, ORDERS.ORDERID, ORDERS.ORDERDATE
    FROM ORDERS
    RIGHT JOIN CUSTOMERS ON ORDERS.CUSTOMERID = CUSTOMERS.CUSTOMERID;

4. FULL OUTER JOIN

두 테이블 간에 공통 열의 값과 상관없이 모든 레코드를 포함하여 결과를 형성합니다. 만약 공통 열의 값이 일치하지 않는 경우에는 NULL 값을 가진 레코드가 생성된다.
하지만 성능상 거의 사용되지 않는다.

5. UNION / UNION ALL

- UNION

여러 SELECT 문의 결과에서 중복된 레코드를 제거하여 하나의 결과 집합으로 합친다. 중복된 레코드는 제거되고, 결과 집합에는 고유한 레코드만 포함된다.

  • 예시
    SELECT 컬럼1, 컬럼2 FROM 테이블1
    UNION
    SELECT 컬럼1, 컬럼2 FROM 테이블2;

- UNION ALL

중복을 제거하지 않고 두 개 이상의 SELECT문의 결과를 모두 합친다. 중복된 레코드도 모두 결과에 포함된다.

  • 예시
    SELECT 컬럼1, 컬럼2 FROM 테이블1
    UNION ALL
    SELECT 컬럼1, 컬럼2 FROM 테이블2;

7. SELF JOIN

데이터베이스의 테이블을 자기 자신과 조인하는 것이다.
하나의 테이블을 두 개의 별칭을 사용하여 조인하는 것이다. 테이블 내에 있는 관련 정보를 검색하거나 비교할 때 사용한다.

  • 예시
    SELECT E1.EMPLOYEENAME AS EMPLOYEE, E2.EMPLOYEENAME AS MANAGER
    FROM EMPLOYEES E1
    LEFT JOIN EMPLOYEES E2 ON E1.MANAGERID = E2.EMPLOYEEID;
profile
공부 하는 방법을 배우는 중

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN