데이터베이스에서 조인(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