DB(SQL)

SQL JOIN 사용법

ari0930 2024. 4. 28. 21:23

SQL JOIN 사용법

SQL JOIN 두 개 이상의 테이블을 연결하여 데이터를 검색하는 방법

CROSS JOIN

CROSS JOIN : 테이블끼리 모든 행이 한 번씩 각각 매칭되는 조인을 의미하면

테이블 A행 개수 * 테이블 B행 개수가 총개수가 된다.

SELECT *
FROM <첫 번째 테이블>
    CROSS JOIN <두 번째 테이블>

부서의 데이터 

사원의 데이터

select 부서.부서번호,부서명,이름,사원.부서번호
from 부서
cross join 사원
where 이름='배재용';

부서와 사원을 CROSS해보면 

이렇게 4개의 결과가 나타난다. 두 개의 테이블을 조합하여 모든 경우의 수를 출력하는 거다.

 

INNER JOIN(내부 조인)

두 테이블의 교집합을 결괏값으로 선택하는 조인이다.

SELECT <열 목록>
FROM <첫 번째 테이블>
    INNER JOIN <두 번째 테이블>
    ON <조인 조건>
WHERE 검색 조건

 

select 사원번호,직위,사원.부서번호,부서명
from 사원
inner join 부서
on 사원.부서번호=부서.부서번호
where 이름='이소미';

사원 테이블과 부서 테이블을 내부 조인 하는데 그때 조건은 사원에서 부서번호와 부서에서의 부서번호가 같은 것을 출력하고 최종적으로 이름이 이소미 인 것을 출력하는 쿼리문이다.

 

3개의 테이블 연결하기

select 고객.고객번호,담당자명,고객회사명,sum(주문수량 * 단가),count(*) as 주문건수
from 고객
inner join 주문
on 고객.고객번호=주문.고객번호
inner join 주문세부
on 주문.주문번호=주문세부.주문번호
group by 1,2,3
order by 4 desc;

연결하기 위해서 각테이블에서 공통적 이것들이 존재해야 한다.

 

 

OUTER JOIN(외부 조인)

내부 조인은 두 테이블에서 모두 공통적인 데이터가 존재해야 하지만 외부 조인은 한쪽에만 데이터가 있어도 결과가 나온다.

SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
    <LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
     ON <조인 조건>

FULL 두 테이블의 합집합

LEFT는 첫 번째 테이블의 모든 값이 출력

RIGHT 두 번째 테이블의 도든 값이 출력

 

사원테이블

부서 테이블

 

select 부서명,사원.*
from 사원
left outer join 부서
on 사원.부서번호=부서.부서번호;

사 원 중에 산워테이블에서의 부서번호와 부서 테이블에서의 부서번호가 일치하는 경우는 부서명을 출력하고 아니면 부서명을 빈칸으로 하고 출력한다.

그러니까 결국은 사원 테이블의 내용은 모두 출력되고 부서 테이블의 부서명이 추가된다.

 

 

SELF JOIN(자체 조인)

자체 조인은 자기 자신과 조인하는 방식이다.

애칭을 만들어  자기 자신을 내부 조인 하는 방식처럼 할 수 있다.

SELECT <열 목록>
FROM <테이블> 별칭A
    INNER JOIN <테이블> 별칭B
	ON <조인 조건>
[WHERE 검색 조건]

사원 테이블

select 사원.사원번호,사원.이름,
상사.사원번호 as '상사의 사원번호',
상사.이름 as'상사의 이름'
from 사원
inner join 사원 as 상사
on 사원.상사번호=상사.사원번호;

사원테이블의 상사번호를 기반으로 상사의 이름을 찾는다.

반응형

'DB(SQL)' 카테고리의 다른 글

sql 서브 쿼리,인라인 뷰,CTE  (0) 2024.05.06
SQL 함수  (1) 2024.04.28
SQL 조회 SELECT 사용법  (0) 2024.04.25
MYSQL 데이터 베이스 생성 과 테이블 만들기  (0) 2024.04.21