본문 바로가기
DATABASE/MySql 실습

[sql] 테이블 2개 합치는법 join on left right join

by 코끼리똥11 2024. 5. 16.

조인(Join)은 데이터베이스에서 두 개 이상의 테이블 간에 연결을 만드는 데 사용되는 기능이다. 이를 통해 여러 테이블에 있는 정보들을 결합하여 원하는 결과를 얻을 수 있다.

조인은 일반적으로 두 테이블 사이에 연결되는 공통된 열(또는 열의 조합)을 명시하여 사용된다. 이를 통해 두 테이블 간의 관계를 정의할 수 있다.

 

학생 이름과 id 번호가 적힌 데이터이다

책이름과 점수 학생 id가 적힌 데이터이다

 

이 데이터는 students 테이블에선 id , papers 테이블에선 sudent_id를 기준으로 합쳐야한다.

 

 

papers 테이블의 student_id는 students 테이블의 id 가 UN 타입이기 때문에 똑같이 UN 으로 맞춰준다.

 

 

하단의 foreignkeys 에 들어가 referenced table은 연결할 테이블 column은 papers 테이블의 연결할 컬럼 우측엔 students 테이블에 연결할 컬럼으로 선택하고 apply 한다.

 

select*
from students as s
join papers as p
on p.student_id = s.id;

 

 

  1. FROM students AS s: 이 부분은 데이터를 가져올 테이블을 지정하는 부분이다. 'students' 테이블을 s라는 별칭으로 지정한다. 이 별칭은 이후의 쿼리에서 테이블을 참조할 때 사용된다.
  2. JOIN papers AS p: 이 부분은 조인할 테이블을 지정하는 부분이다. 'papers' 테이블을 p라는 별칭으로 지정한다. 이 별칭은 이후의 쿼리에서 테이블을 참조할 때 사용된다.
  3. ON p.student_id = s.id: 이 부분은 조인 조건을 지정하는 부분이다. 'papers' 테이블의 'student_id' 열과 'students' 테이블의 'id' 열을 비교하여 조인한다. 이는 두 테이블 간의 관계를 정의하는 것이다. 만약 'papers' 테이블의 'student_id' 열과 'students' 테이블의 'id' 열이 서로 일치하는 경우에만 결과 집합에 포함된다.

결과적으로, 이 쿼리는 'students' 테이블과 'papers' 테이블을 조인하여, 각 학생과 그 학생이 제출한 모든 논문의 정보를 함께 가져온다.

 

여기서 id 컬럼이 2개로 중복되는데 이 컬럼을 선택할떄 앞에 테이블 명을 써주면 된다 여기선 students 는 s 로 바꿔줬기때문에 s.id 를 입력하면 students 테이블의 id 컬럼만 선택 할 수 있다.

 

 

left right

  • 왼쪽 또는 오른쪽 테이블의 모든 행을 기준으로 조인을 수행한다.
  • 조인 시 양쪽 테이블에서 일치하는 행이 없는 경우에도, 한쪽 테이블의 모든 행을 결과 집합에 포함시킨다.
  • 만약 한쪽 테이블에서 일치하는 행이 없는 경우, 해당 열은 NULL 값으로 채워진다.
select *
from students as s
left join papers as p
on p.student_id = s.id;