본문 바로가기
Database/OracleSQL

Oracle / 두개의 테이블 Join 하기 /INNER / OUTER / LEFT / RIGHT / FULL /inner Join 과 outer Join 차이점

by hyeon-H 2021. 6. 11.
728x90
반응형

JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 줍니다. 이러한 JOIN은 보통 SELECT 문과 함께 자주 사용되며,
INNER JOIN,  OUTER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
등이 있습니다.

두개의 테이블을 연관지어서 데이터를 가져와야 하는 경우에 각 테이블에 연관되는 값을 넣어서 테이블끼리 연관을 지어 데이터를 가져오는 방법입니다.


두개의 테이블에서 데이터를 동시에 가져오는 방법이므로
일단 두개의 테이블이 필요합니다.

Create table Atable(
    aidx number not null,
    name varchar2(10) not null,
    email varchar2(20) not null
);

Create table Btable(
     bidx number not null,
     addr varchar(20) null,
     phone varchar(15) null,
     age number not null
);

두개의 테이블을 생성한 후, 데이터를 넣어줬습니다.

Atable
Btable

여기서 Atable의 AIDX와 Btable BIDX는 각 행의 고유한 번호로 두 테이블을 연결해주는 컬럼이 될 것입니다.



INNER JOIN

select * from 테이블명1 Inner join 테이블명2 on 테이블1.컬럼명 = 테이블2.컬럼명;
select * from 테이블명 가상명1, 테이블명 가상명2 where 가상명.컬럼명1 = 가상명.컬럼명2;

select * from Atable Inner join Btable on Atable.aidx = Btable.bidx;
select * from Atable A, Btable B where A.aidx = B.bidx;

두 쿼리문은 같은 결과 값을 나타낸다.
Atable 과 Btable

  Atable의 aidx와 Btable의 bidx의 교집합만 가져오게됩니다.

 

LEFT JOIN

select * from Atable Left join Btable on Atable.aidx = Btable.bidx;

쿼리문의 결과
Atable 과 Btable

 Atable을 기준으로해서 Btable 연관되는 데이터가 있다면 데이터를 연결하고 없다면 null을 표시합니다.

 

select * from Atable left join Btable on Atable.aidx = Btable.bidx where Btable.bidx is null;

쿼리문 결과

 

RIGHT JOIN

select * from Atable right join Btable on Atable.aidx = Btable.bidx;

쿼리문의 결과

Btable을 기준으로해서 Btable에  연관되는 데이터가 없다면 null을 표시합니다.

 

FULL  OUTER JOIN

select * from Atable full outer join Btable on Atable.aidx = Btable.bidx;

Atable 과 Btable의 연관을 짖고 데이터가 없는 컬럼은 null을 표시합니다.

 

 

 

 

 

Inner Join 과 Outer Join 의 차이점

오늘 면접 보러 간 곳에서 몇 가지 질문을 받았다. 공부했던 건 확실했지만 막상 실무에 사용할 질문을 받으니 말 문이 턱 막혔다. 오답 정리할 겸 다시 공부할 겸 겸사겸사 다시 이 문제가 나오

javakid.tistory.com

 

[SQL] INNER 조인과 OUTER조인이 무엇인가요?

[광고] HWP 를 웹페이지에서 바로 열고, 편집하고, 저장하고 싶다면? 온라인으로-한글-HWP-파일-편집하기-폴라리스-오피스 폴라리스오피스 웹 한글 - 브라우저에서 무료로 사용하는 한글 한글 뷰어

stanleykou.tistory.com

 

728x90
반응형