SQL _ join (inner, left)

2022. 12. 22. 21:46SQL

join 은 두 테이블의 공통된 정보값을 기준으로 테이블을 연결해서 한 테이블 join 해 준다. 

 

1. left join 

- 두 테이블의 공통된 정보값을 기준으로 테이블을 연결한다.

-inner join과의 차이점은 어떤 테이블에 어떤 데이터를 붙일지 순서가 중요하다. 

-NULL 값 까지 모두 가져온다. 

 

2. inner join

-두 테이블의 공통된 정보값을 기준으로 테이블을 연결한다.

-left join과의 차이점은 두 테이블이 서로 가지고 있는 데이터만 출력한다.

 

형태는

select * from 테이블

inner join 테이블 on 테이블. 공통 key = 테이블.공통key

 

-orders 테이블에 users 테이블 연결 하기.

select * from orders o
inner join users u
on o.user_id = u.user_id;

-orders와 users의 공통된 key값은 user_id이다. 이것을 이용하여 join 한다. 

 

 

-left join은 이렇게 없는 값 null도 출력된다. 

-null값을 제거하고 출력하고 싶을 때는 where를 이용한다.

where pu.point_user_id is not NULL

-null값만 출력하고 싶을 때

where pu.point_user_id is NULL

-null을 적을 때는 대문자로 사용해야 한다. 

-inner join은 두 테이블에 있는 값들만 출력된다. (null이 없다.)

 

join을 이용할 때는 지칭을 잘 해줘야 한다.

지칭을 제대로 해주지 않으면 error가 난다. 

user_id 같은 경우는 users 테이블과 point_users 테이블이 공통으로 가지고 있는 것이기 때문에 어디 테이블을 이용 할 것인지 지정해주지 않으면 헷갈려한다. 

u.user_id로 지정해주니 정상작동 한다. 

또 지칭이 안필요한 경우도 있긴 하다. 

point_user_id key값은 point_users에만 있는 유일한 key값이기 때문에 pu로 지정해주지 않아도 정상작동 한다. 

하지만!! pu로 필히 지정하여 컴퓨터가 아닌 내가 헷갈리지 말아야 한다. 그리고 작성해주는 것이 좋다고 한다. 

그래서 데이터의 값을 찾기 전에는 테이블이 어떤 형태이고 어떤 key값이 있는지 확인하는 작업이 중요하다고 느꼈다.

 

 

- 두 join은 정말 연습이 많이 필요하다.....