SQL

[SQL] 3주차 Join

난 훈이 2022. 3. 3. 16:32

Join → 두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미

 

  • Left Join ~ on

select * from users u
left join point_users p
on u.user_id = p.user_id;

▶ 어떤 데이터는 필드가 채워져있지만,  어떤 데이터는 비어있는 필드가 있다. ( null )

    어디에 → 뭐를 붙일건지, 순서가 중요

ex) null값은 회원이지만 수강을 등록/시작하지 않아 포인트가 없는 경우

     비어있는 필드 찾기 : where 필드명 is null / 비어있는 필드 빼고 찾기 is not null

 

  • Inner join ~ on

select * from users u
inner join point_users p
on u.user_id = p.user_id;

▶ 비어있는 필드(null)가 있는 데이터가 없다.

같은 user_id를 두 테이블에서 모두 가지고 있는 데이터만 출력했기 때문이다.

 

// 쿼리가 실행되는 순서
select * from enrolleds e
inner join courses c
on e.course_id = c.course_id;

1) from enrolleds: enrolleds 테이블 데이터 전체를 가져옵니다.
2) inner join courses on e.course_id = c.course_id: courses를 enrolleds 테이블에 붙이는데, 
   enrolleds 테이블의 course_id와 동일한 course_id를 갖는 courses의 테이블을 붙입니다.
3) select * : 붙여진 모든 데이터를 출력합니다.