본문 바로가기

개발일지(일간)

23년 1월 11일 sql

sql문의 join에 대해서 배웠다.

join에는 inner join과 outer join이 있는데,

inner join은 교집합이 된 부분을 가져오는거고, outer join은 교집합한 부분과, 방향을 지정한 부분의 테이블의 요소를 모두 가지고 온다. 즉, null값도 모두 가지고 올 수 있다.

 

예를 들면 다음과 같은 쿼리가 있을때,

SELECT B.mem_id, M.mem_name, B.prod_name, M.addr

FROM buy B

JOIN member M

ON B.mem_id = M.mem_id;

결과물은 이렇게 나타난다.

교집합 된 부분을 가져오는 것이기 때문에 null값, 즉 값이 없는 부분은 포함하지 않는다.

 

그리고 outer join을 활용하면, 교집합 된 부분 외에도 테이블의 모든 값을 가져온다.

다음과 같은 쿼리가 있을 때, member테이블의 모든 요소를 buy와 교집합이 없어도 모두 가져온다.

SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
FROM member M
LEFT OUTER JOIN buy B
ON M.mem_id = B.mem_id
ORDER BY M.mem_id;

그리고 이전에 공부했을때, 분명히 left join을 썼지 left outer join을 쓰지는 않은것같아서 둘의 차이를 찾아봤더니  left join은 outer를 생략한 것이라고 한다. left(outer)join이라 둘의 결과값은 같다고 한다.

sql을 3일차 공부하고 있는데, 이전에 공부했던 것들이 하나 둘씩 다시 생각이 난다.

하지만 잊어버린것도 많은것 같다. join의 활용도 오늘 배운 것 외에 다양한 활용이 있는데 잘 생각나지 않는다.

이전에 기록해놨던 것들을 찾아 다시 학습해 보아야 할 것 같다.

'개발일지(일간)' 카테고리의 다른 글

23년 1월 13일 sql  (0) 2023.01.13
23년 1월 12일 sql  (0) 2023.01.12
23년 1월 10일 sql  (0) 2023.01.10
23년 1월 9일  (0) 2023.01.09
23년 1월 6일  (0) 2023.01.07