본문 바로가기
공부/DB

JOIN

by 단순한 프로그래머 2025. 8. 14.

SQL에서 JOIN을 사용하는 이유는

한 테이블에 모든 데이타를 다 때려 넣는 것이 아닌

중복 된 데이타가 들어가지 않도록 정규화를 하기 때문이다.

 

게시판별로 테이블이 아래와 같이 있으면 효율이 많이 떨어지고 용량도 많이 차지하게 된다.

 

  • 게시판테이블
ID NAME NICKNAME TITLE DATETIME CONTENT
song 송하나 쏭쏭 ... ... ...
park 박둘 빡빡빡 ... ... ...
kim 김길동 단순함 ... ... ...

 

 

 

멤버테이블과 게시판테이블을 분리하여 관리함으로써 데이타를 효율적으로 관리할 수 있다.

 

  • 분리 된 멤버테이블
ID NAME NICKNAME
song 송하나 쏭쏭
park 박둘 빡빡빡
kim 김길동 단숨함

 

  • 분리 된 게시판테이블
ID TITLE DATETIME CONTENT
song ... ... ...
park ... ... ...
kim ... ... ...

 

 

 

이렇게 분리 된 테이블은 한 개의 테이블만으로는 정보를 모두 표현할 수 없기 때문에

특정 칼럼으로 합쳐서 표현할 수 있는 것이 JOIN이다.

 

 


 

INNER JOIN

2개의 테이블을 ID, WRITER_ID로 INNER JOIN 할 경우

 

SELECT * FROM tb_member M
INNER JOIN tb_notice N ON M.id = N.writer_id;

 

두 개의 테이블에 서로 공통으로 들어있는 데이타만 결과로 나타난다.

 


 

 

LEFT OUTER JOIN

2개의 테이블을 ID, WRITER_ID로 LEFT OUTER JOIN 할 경우

 

SELECT * FROM tb_member M
LEFT OUTER JOIN tb_notice N ON M.id = N.writer_id;

 

왼쪽 테이블은 존재하고 오른쪽 테이블에 존재하지 않는 데이타를 OUTER라고 하는데

왼쪽 OUTER 데이타를 포함해서 결과를 보여달라는 뜻이다.

 


 

RIGHT OUTER JOIN

2개의 테이블을 ID, WRITER_ID로 RIGHT OUTER JOIN 할 경우

 

SELECT * FROM tb_member M
RIGHT OUTER JOIN tb_notice N ON M.id = N.writer_id;

 

오른쪽 테이블은 존재하고 왼쪽 테이블에 존재하지 않는 데이타를 OUTER라고 하는데

오른쪽 OUTER 데이타를 포함해서 결과를 보여달라는 뜻이다.

 

 


 

FULL OUTER JOIN

2개의 테이블을 ID, WRITER_ID로 FULL OUTER JOIN 할 경우

 

SELECT * FROM tb_member M
FULL OUTER JOIN tb_notice N ON M.id = N.writer_id;

 

양쪽 테이블의 OUTER를 모두 포함해서 결과를 보여달라는 뜻이다.

 

 


 

SELF JOIN

확장해서 보여줄 컬럼이 있는데 그 컬럼이 다른 테이블이 아닌 조회하는 테이블에 있을 때

셀프조인을 통해서 현 테이블에 컬럼을 추가하여 보여준다.

 

멤버테이블에 상사에 대한 ID만 존재하는데 상사의 이름까지 출력하고자 할 때

셀프조인하여 상사의 이름을 출력한다.

 

SELECT M.*, B.name BOSS_NAME FROM tb_member M
LEFT OUTER JOIN tb_member B ON M.boss_id = B.id;

 


 

<<뉴렉처 유튜브 동영상 강의>> 참고하여 작성

 

 

 

 

'공부 > DB' 카테고리의 다른 글

UNION, UNION ALL, MINUS, INTERSECT  (3) 2025.08.25
사용자 함수 생성  (4) 2025.08.13
기타 함수  (2) 2025.08.12
SQL NULL 관련 함수  (0) 2025.08.11
SQL 데이타 변환 함수  (1) 2025.08.11