[기술 정리] 14. Inner Join과 Outer Join

KangHo Lee's avatar
Nov 29, 2024
[기술 정리] 14. Inner Join과 Outer Join
💡
데이터베이스에서 조인(join)은 두 개 이상의 테이블을 결합하여 연관된 데이터를 가져오는 방법입니다.

1. Inner Join

  • Inner Join은 두 테이블 간에 일치하는 레코드만 결합하여 반환합니다. 일치하지 않는 레코드는 결과에 포함되지 않습니다.

예시

두 테이블이 있다고 가정합니다:
  • students 테이블: 학생 정보를 저장
  • grades 테이블: 학생의 성적 정보를 저장
SELECT students.name, grades.grade FROM students INNER JOIN grades ON students.id = grades.student_id;
  • 위 쿼리는 students 테이블과 grades 테이블에서 학생 ID가 일치하는 레코드만 반환합니다.
  • 결과는 각 학생의 이름과 성적을 포함합니다.

2. Outer Join

  • Outer Join은 두 테이블 간의 일치하는 레코드뿐만 아니라, 일치하지 않는 레코드도 포함하여 반환합니다.
  • Outer Join에는 Left Outer Join, Right Outer Join, Full Outer Join이 있습니다.

Left Outer Join

  • Left Outer Join은 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환합니다.
  • 오른쪽 테이블에 일치하는 레코드가 없으면 NULL로 채웁니다.
SELECT students.name, grades.grade FROM students LEFT OUTER JOIN grades ON students.id = grades.student_id;
  • 위 쿼리는 모든 학생의 이름과 해당 성적을 반환합니다. 성적이 없는 학생은 성적 칸에 NULL이 표시됩니다.

Right Outer Join

  • Right Outer Join은 오른쪽 테이블의 모든 레코드와 왼쪽 테이블의 일치하는 레코드를 반환합니다.
  • 왼쪽 테이블에 일치하는 레코드가 없으면 NULL로 채웁니다.
SELECT students.name, grades.grade FROM students RIGHT OUTER JOIN grades ON students.id = grades.student_id;
  • 위 쿼리는 모든 성적과 해당 학생의 이름을 반환합니다.
  • 학생 정보가 없는 성적 레코드는 학생 이름 칸에 NULL이 표시됩니다.

Full Outer Join

  • Full Outer Join은 두 테이블의 모든 레코드와 일치하는 레코드를 반환합니다.
  • 일치하지 않는 레코드는 NULL로 채웁니다.
SELECT students.name, grades.grade FROM students FULL OUTER JOIN grades ON students.id = grades.student_id;
  • 위 쿼리는 모든 학생의 이름과 성적을 반환합니다.
  • 일치하지 않는 레코드는 각각 NULL로 표시됩니다.
Share article

devleekangho