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 |