본문 바로가기

아옳옳의 코딩공부/아옳이의 데이터베이스 MySQL

2021-05-28 MySQL 데이터베이스 내부조인

반응형

조인 

@2개 이상의 테이블을 묶어서 하나의 결과 테이블을 만드는것 다음과 같은 그림을 보면 이해가 될것이다. 

그림처럼 item테이블에 id를 review테이블에서 id로 참조하며 하나의 테이블처럼 보여주는것을 조인이라고 한다

여려개의 테이블을 묶어서 만들어 줄수 있는데 일단 기본적인 2개의 테이블 묶어주는 것 부터 보자 

#데이터베이스에서 조인을 얼마나 잘하는지에 따라 잘하고 못하고를 나눈다고 한다... 그만큼 중요하다...

 

결과를 보기전에 일단 각각의 테이블을 먼저 확인해보자 

item 테이블
stock 테이블

이렇게 각각의 테이블이을 stock 테이블에서 item_id를 가지고 item테이블과 조인을 시켜줄 것이다. 

길어지는 아이디를 AS 앞글자로 변경해줌 ( 변경해주면 모든것 다 변경 해줘야 함 ) 

이렇게 사용할려면 포린키 설정이 되어 있어야 함(확실하게 데이터손실을 막기위함임) (참조하는 쪽에서 해주어야 함 )

그 기준이 뭐가 될것인지 설정을 해주자

렌치버튼을 눌러서 들어가면 아래 부분에foreignkeys 라고 보일것이다 그것을 눌러 들어가면 다음 사진과 같이 설정을 해주면된다 .  

첫번째 작성란에는 내가 마음대로 이름을 지어 주면되고 차례대로 내가 참조할 테이블 지정후 참조할 것을 지정 해주면 된다.

이렇게 해준뒤에 실행을 해보면 다음과 같이 출력이 되는것을 볼수 있다. 

이렇게 출력되는것을 볼수 있는데 보면 stock테이블과 item 테이블이 결합된형태로 출력된것을 볼수 있다.

하지만 여기서 중요한 점은 stock에서 item을 참조 하였기 때문에 아이템에 없는 부분들은 null로 표현 된걸 볼수 있다. 

이렇게 말고 반대로도 가능하다 .

OUTER JOIN 에서 RIGHT로만 변경했을때 이다.

하지만 이렇게 출력하면 stock이 item을 참조하기 때문에 item테일블에 없는 정보들은 나오지 않고 stock테이블 기준으로 있는 것들만 출력이 된다. 

 

@ 마지막으로 이너 조인으로도 가능하다 

보면 위쪽 Right로 했을때와 같다고 보일수 있다. OUTER JOIN은 왼쪽이나 오른쪽 기준으로 기준이 가지고 있는 열만

출력을 하는 반면 이너 조인은 교집합으로 둘만 가지고 있는 내용만 출력을 해준다 .

 

하나더 나아가 다음과 같이 새로운 테이블고 기존 테이블 간에 데이터 누락된것을 찾을때도 이런 조인이 사용된다. 

즉 사용방법은 총 3가지가 있다. 

RIGHT OUTER JOIN , LEFT OUTER JOIN , INNER JOIN (교집합) 

 

@UNION (합집합) 

 

 

@이제 2개씩 묶는 것을 해보았으니 3개를 동시에 묶는 것을 해볼것이다. 

맨 위의 그림처럼 review 테이블에서 item_id를 통하여 item테이블과 조인을 해주었고 , 한번더 mem_id로 member테이블과 조인을 해준것을 볼수 있다. 

 

반응형