SQL

SQL정리(join)

goshek 2024. 9. 25. 16:19

### join01 ###

/*
조인(join)
    : 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것
    
    종류: 내부 조인, 외부 조인, 상호 조인, 자체 조인
    
    1. 내부 조인(inner join)
    : 두 개 이상의 테이블에서 특정 열(기준 열)의 값이 일치하는 행만 가져오는 조인
    >> 교집합을 반환
    
    # 일대다 관계 (1 : 多)
      : 하나의 테이블의 한 행이 다른 테이블의 여러 행과 관련되는 경우
      EX) members 테이블 - purchases 테이블
      >> 각 회원은 여러 구매 기록을 가짐 (1회원 : 여러 개의 구매기록)
      
      EX) 1명의 회사원 - 여러 번의 급여
          학생 테이블 - 학점 테이블
          
# 내부 조인의 기본 형태
    select 열 목록
    from 기준테이블(첫 번째 테이블)
(inner) join 두 번째 테이블
        on 조인될 조건
(where 조건 ...);

외부 조인(outer join)
    : 두 테이블을 조인할 때 필요한 내용이 한쪽 테이블에만 있어도 결과를 추출하는 조인
    >> 조인 조건 on식에 맞지 않는 행도 결과에 포함
    
    # 외부 조인의 종류
    left outer join, right outer join, full outer join
    
    # 기본 형태
    select 열 목록
    from 기준 테이블
(left | right | full) outer join -- 기본: left
        on 조인될 조건
(where ....);
*/

# 1. left outer join 
# : 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 매칭되는 레코드만을 포함

# 전체 회원에 대해 구매 기록(없더라도)을 출력
select
M.member_id, M.name, P.product_code, M.area_code
from
members M
left outer join purchases P
        on M.member_id = P.member_id
order by M.member_id;

# : left outer join: 왼쪽 테이블의 내용은 모두 출력되어야 함!

# right outer join 예제
select
M.member_id, M.name, P.product_code, M.area_code
from
purchases P
right outer join
members M -- 오른쪽에 있는 회원 테이블을 기준으로 외부 조인
    on M.member_id = P.member_id
order by M.member_id;

# 외부조인 예제 #
select
M.member_id, P.product_code, M.name, M.contact
from
members M
left outer join purchases P
        on M.member_id = P.member_id
where
P.product_code is null;/*
외부 조인(outer join)
    : 두 테이블을 조인할 때 필요한 내용이 한쪽 테이블에만 있어도 결과를 추출하는 조인
    >> 조인 조건 on식에 맞지 않는 행도 결과에 포함
    
    # 외부 조인의 종류
    left outer join, right outer join, full outer join
    
    # 기본 형태
    select 열 목록
    from 기준 테이블
(left | right | full) outer join -- 기본: left
        on 조인될 조건
(where ....);
*/

# 1. left outer join 
# : 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 매칭되는 레코드만을 포함

# 전체 회원에 대해 구매 기록(없더라도)을 출력
select
M.member_id, M.name, P.product_code, M.area_code
from
members M
left outer join purchases P
        on M.member_id = P.member_id
order by M.member_id;

# : left outer join: 왼쪽 테이블의 내용은 모두 출력되어야 함!

# right outer join 예제
select
M.member_id, M.name, P.product_code, M.area_code
from
purchases P
right outer join
members M -- 오른쪽에 있는 회원 테이블을 기준으로 외부 조인
    on M.member_id = P.member_id
order by M.member_id;

# 외부조인 예제 #
select
M.member_id, P.product_code, M.name, M.contact
from
members M
left outer join purchases P
        on M.member_id = P.member_id
where
P.product_code is null;

'SQL' 카테고리의 다른 글

SQL정리(변수)  (0) 2024.09.26
SQL 정리(형 변환)  (0) 2024.09.26
SQL 정리(select)  (0) 2024.09.25
sql 기초 예시  (0) 2024.09.25
SQL 정리(데이터타입)  (1) 2024.09.23