본문 바로가기
Backend/Oracle DB

14. 테이블 조인의 종류 (Inner Join, Left Join, Right Join, (+)기호)

by 개발개발빈이 2022. 5. 20.

○ inner join (= join)

    - 두 테이블에 공통으로 존재하는 칼럼을 이용하는 방식
    - inner 생략 가능
    - 기본

select A.*, B.*
from tableA A inner join tableB B
on A.key=B.key

select A.*, B.*
from tableA A join tableB B	 --inner생략가능
on A.key=B.key

 

○ left outer join (= left join)

    - 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일 데이터를 추출
    - outer 생략가능

select A.*, B.*
from tableA A left outer join tableB B
on A.key=B.key

select A.*, B.*
from tableA A left join tableB B  --outer생략가능
on A.key=B.key

 

right outer join (= right join)

    - 오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 동일 데이터를 추출
    - outer 생략가능

select A.*, B.*
from tableA A right outer join tableB B
on A.key=B.key

select A.*, B.*
from tableA A right join tableB B  --outer생략가능
on A.key=B.key

 

○ 그 외 테이블 조인의 종류

 PRACTICE 연습문제

    - 학사관리 관련 테이블을 이용한 left join, right join 연습문제

        Q1) 학생테이블의 모든 행을 가져오고, 수강테이블에서 학번이 일치하는 행만 가져오기

        Q2) left join을 이용해서 수강신청을 하지 않은 학생의 학번, 이름, 과목코드 조회하시오

        Q3) right join을 이용해서 수강신청을 하지 않은 학생의 학번, 이름, 과목코드 조회하시오

--Q1
select ST.*, SU.*
from tb_student ST left join tb_sugang SU
on ST.hakno=SU.hakno;

--Q2
select ST.hakno, ST.uname, SU.gcode
from tb_student ST left join tb_sugang SU
on ST.hakno=SU.hakno
where SU.sno is null;

--Q3
select ST.hakno, ST.uname, SU.gcode
from tb_sugang SU right join tb_student ST
on ST.hakno=SU.hakno
where SU.sno is null;

       

 

(+)기호를 이용한 테이블 조인

    - (+)기호는 일치되지 않는 행이 존재하지 않는 쪽에 붙인다

select ST.*, SU.*
from tb_student ST, tb_sugang SU
where ST.hakno=SU.hakno(+);         -- left join

select SU.*, ST.*
from tb_sugang SU, tb_student ST
where SU.hakno(+)=ST.hakno;         -- right join

 

댓글