JOIN(Inner join, Outer join)

박선규's avatar
Sep 30, 2024
JOIN(Inner join, Outer join)
 

join

📌
조인(join)은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다.
  • Join 을 사용하지 않으면 조회는 빠르지만 수정 시에 일관성이 깨질 수도 있다
    • 이때 INSERT와 SELECT만 하는 로직은 중복 되는 것이 더 효율적이다.

Inner join

  • 두 테이블에서 필요한 정보만을 결과로 가져온다.
select * from image_tb img inner join user_tb u on img.user_id = u.id
select * form resume_tb rt inner join user_tb ut on ut.username, rt.resume_title, ut.age, ut.address, rt.career
 
☝🏻
2개의 테이블을 join해서 select할 때 두 테이블의 순서에서 먼저 위치를 잡은 테이블을 드라이빙 테이블 이라한다. 드라이빙 테이블 -SQL의 조인을 실행할 때 가장 먼저 스캔 되는 테이블을 뜻하며 대체로 외래 키(foreign key)가 있는 곳을 드라이빙 테이블로 설정하면 된다. 조종 당하는 테이블: 드라이빙 뒤에 inner join 뒤에 있는 테이블
(on 뒤에 기본키와 외래키를 적는데 순서는 on 외래키 = 기본키로 적는다.)
 

Outer join

  • 내가 선정한 테이블을 모두 보여주기 위해서 사용한다,.
  • 내부 조인을 수행하고, 특정 테이블의 나머지 데이터도 결과에 포함한다.
  • 총 3가지로 나뉘는데 Left Outer Join, Right Outer Join, Full Outer Join 이 존재한다.
  • 두 개의 컬럼이 중복되면 안된다.
  • 코드
    • Left Outer Join
    • select img.*, rp.* from image_tb img left outer join reply_tb rp on rp.image_id = img.id;
    • Right Outer Join
    • select img.*, rp.* from reply_tb rp right outer join image_tb img on rp.image_id = img.id;

Query문의 진행 순서

SELECT → 프로젝션 (특정 데이터를 검색하는 것)(필요한 데이터만 뽑아 내는 것)
FROM → 테이블을 퍼올리는 것 (낭비가 많아서 많은 경우 나눈다, 테이블 나누기)
WHERE → 행을 줄인다 (필요없는 행을 프로젝션 할 필요 없으니)
ORDER BY → 바이너리 정렬 (이진 정렬) 제일 마지막에
☝🏻
QUERY는 무조건 FROM이 먼저 작동한다. 순서는 FROM → WHERE → SELECT → ORDER BY 순서이다.
notion image
notion image
notion image
notion image
 
 
 
select u.id, u.blue_checked, p.name, p.path, u.nick_name, u.htight, u.
 
Share article

p4rksk