INNER JOIN과 OUTER JOIN은 SQL에서 사용되는 두 가지 중요한 JOIN 유형으로, 두 개 이상의 테이블을 결합할 때 사용됩니다. 각각의 JOIN 유형은 결합 후 결과에 포함되는 행의 기준이 다릅니다. 다음은 이 두 JOIN 유형을 비교하고 예시를 통해 설명한 것입니다.
INNER JOIN
INNER JOIN은 두 테이블에서 공통된 값을 가지는 행만 반환합니다. 즉, 조인 조건을 만족하는 행들만 결과에 포함됩니다.
예시
두 개의 테이블 Students와 Courses가 있다고 가정해 보겠습니다.
Students 테이블
StudentIDName
1 | Alice |
2 | Bob |
3 | Charlie |
Courses 테이블
CourseIDStudentIDCourseName
101 | 1 | Math |
102 | 2 | Science |
103 | 4 | History |
SELECT Students.StudentID, Students.Name, Courses.CourseName
FROM Students
INNER JOIN Courses ON Students.StudentID = Courses.StudentID;
결과
StudentIDNameCourseName
1 | Alice | Math |
2 | Bob | Science |
- INNER JOIN은 Students.StudentID와 Courses.StudentID가 일치하는 행만 반환합니다.
- StudentID가 3인 Charlie와 4인 History는 결과에 포함되지 않습니다.
OUTER JOIN
OUTER JOIN은 세 가지 종류가 있습니다: LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN. 이들은 각각 좌측, 우측, 또는 양쪽 테이블의 모든 행을 반환하며, 조인 조건을 만족하지 않는 경우 NULL을 포함합니다.
LEFT OUTER JOIN
LEFT OUTER JOIN은 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환합니다. 일치하지 않는 경우, 오른쪽 테이블의 컬럼은 NULL이 됩니다.
SELECT Students.StudentID, Students.Name, Courses.CourseName
FROM Students
LEFT OUTER JOIN Courses ON Students.StudentID = Courses.StudentID;
결과
StudentIDNameCourseName
1 | Alice | Math |
2 | Bob | Science |
3 | Charlie | NULL |
- LEFT OUTER JOIN은 모든 Students 테이블의 행을 포함하며, 일치하지 않는 경우 CourseName이 NULL로 채워집니다.
RIGHT OUTER JOIN
RIGHT OUTER JOIN은 오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환합니다. 일치하지 않는 경우, 왼쪽 테이블의 컬럼은 NULL이 됩니다.
SELECT Students.StudentID, Students.Name, Courses.CourseName
FROM Students
RIGHT OUTER JOIN Courses ON Students.StudentID = Courses.StudentID;
결과
StudentIDNameCourseName
1 | Alice | Math |
2 | Bob | Science |
NULL | NULL | History |
- RIGHT OUTER JOIN은 모든 Courses 테이블의 행을 포함하며, 일치하지 않는 경우 Students의 컬럼이 NULL로 채워집니다.
FULL OUTER JOIN
FULL OUTER JOIN은 양쪽 테이블의 모든 행을 포함하며, 일치하지 않는 경우 각 테이블의 컬럼이 NULL로 채워집니다.
SELECT Students.StudentID, Students.Name, Courses.CourseName
FROM Students
FULL OUTER JOIN Courses ON Students.StudentID = Courses.StudentID;
결과
StudentIDNameCourseName
1 | Alice | Math |
2 | Bob | Science |
3 | Charlie | NULL |
NULL | NULL | History |
- FULL OUTER JOIN은 양쪽 테이블의 모든 행을 포함하며, 일치하지 않는 경우 각 테이블의 컬럼이 NULL로 채워집니다.
요약
- INNER JOIN: 두 테이블에서 일치하는 행만 반환.
- LEFT OUTER JOIN: 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행 반환.
- RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행 반환.
- FULL OUTER JOIN: 양쪽 테이블의 모든 행을 포함하며, 일치하지 않는 경우 NULL로 채워짐.
'JAVA Spring FRAMEWORK' 카테고리의 다른 글
[JAVA]RESTful API 서버란 (6) | 2024.11.13 |
---|---|
[JAVA]JDBC란? (0) | 2024.11.13 |
디자인 패턴이란? (0) | 2024.06.24 |
[Spring Boot ] Spring Initializr 로 시작하기 (0) | 2023.03.14 |
[Spring]FormTag & DataBinding - (1)TextField (1) | 2021.11.29 |