JOIN의 종류와 차이점
SQL의 JOIN은 두 개 이상의 테이블을 연결하여 데이터를 조회할 때 사용됩니다.
JOIN의 종류는 여러 가지가 있으며, 각각의 차이를 이해하는 것이 중요합니다.
✅ 1. INNER JOIN (내부 조인)
- 설명: 두 테이블에서 공통된 값이 있는 행만 반환합니다.
- 특징:
- ON 절에 지정한 조건을 만족하는 데이터만 가져옴.
- 일치하지 않는 행은 제외됨.
- SQL 예제:
SELECT A.emp_id, A.name, B.dept_name FROM Employee A INNER JOIN Department B ON A.dept_id = B.dept_id;
- 결과: dept_id가 일치하는 데이터만 조회됨.
✅ 2. LEFT JOIN (LEFT OUTER JOIN, 왼쪽 외부 조인)
- 설명: 왼쪽 테이블의 모든 행을 가져오고, 오른쪽 테이블에서 일치하는 데이터가 있으면 가져오며, 없으면 NULL로 표시됩니다.
- 특징:
- 왼쪽 테이블에 있는 모든 행을 포함.
- 오른쪽 테이블에 대응되는 값이 없으면 NULL 값 반환.
- SQL 예제:
SELECT A.emp_id, A.name, B.dept_name FROM Employee A LEFT JOIN Department B ON A.dept_id = B.dept_id;
- 결과: Employee 테이블의 모든 행을 포함하되, Department에 없는 경우 NULL 반환.
✅ 3. RIGHT JOIN (RIGHT OUTER JOIN, 오른쪽 외부 조인)
- 설명: 오른쪽 테이블의 모든 행을 가져오고, 왼쪽 테이블에서 일치하는 데이터가 있으면 가져오며, 없으면 NULL로 표시됩니다.
- 특징:
- 오른쪽 테이블의 모든 데이터를 포함.
- 왼쪽 테이블에 대응되는 값이 없으면 NULL 값 반환.
- SQL 예제:
SELECT A.emp_id, A.name, B.dept_name FROM Employee A RIGHT JOIN Department B ON A.dept_id = B.dept_id;
- 결과: Department 테이블의 모든 행을 포함하며, Employee에 없는 경우 NULL 반환.
✅ 4. FULL JOIN (FULL OUTER JOIN, 완전 외부 조인)
- 설명: 두 테이블에서 일치하는 데이터는 물론, 일치하지 않는 데이터까지 모두 반환합니다.
일치하지 않는 값은 NULL로 채워집니다. - 특징:
- INNER JOIN + LEFT JOIN + RIGHT JOIN을 포함하는 개념.
- 두 테이블에서 모든 행을 가져오고, 일치하지 않는 값은 NULL 처리됨.
- SQL 예제:
SELECT A.emp_id, A.name, B.dept_name FROM Employee A FULL JOIN Department B ON A.dept_id = B.dept_id;
- 결과:
- Employee 또는 Department 중 한쪽에만 있는 데이터도 포함되며, 없는 값은 NULL.
✅ 5. CROSS JOIN (교차 조인)
- 설명: 조인 조건 없이 두 테이블의 모든 행을 곱집합(Cartesian Product) 형태로 반환합니다.
- 특징:
- 모든 경우의 수를 조합하여 결과를 생성.
- N x M 개의 결과가 출력됨.
- SQL 예제:
SELECT A.emp_id, A.name, B.dept_name FROM Employee A CROSS JOIN Department B;
- 결과: Employee 테이블의 모든 행과 Department 테이블의 모든 행이 곱집합 형태로 조합됨.
🔹 JOIN의 차이점 요약
JOIN 종류 포함되는 데이터
INNER JOIN | 두 테이블에서 일치하는 데이터만 |
LEFT JOIN | 왼쪽 테이블의 모든 데이터 + 오른쪽 테이블에서 일치하는 데이터 (일치하지 않는 경우 NULL) |
RIGHT JOIN | 오른쪽 테이블의 모든 데이터 + 왼쪽 테이블에서 일치하는 데이터 (일치하지 않는 경우 NULL) |
FULL JOIN | 두 테이블의 모든 데이터 (일치하지 않는 경우 NULL) |
CROSS JOIN | 두 테이블의 모든 행을 곱집합(카테시안 곱) 형태로 반환 |
✅ 예제 데이터 예시
| Employee 테이블 |
emp_id name dept_id
1 | 김철수 | 101 |
2 | 이영희 | 102 |
3 | 박민수 | NULL |
| Department 테이블 |
dept_id dept_name
101 | 인사팀 |
102 | 개발팀 |
103 | 회계팀 |
- INNER JOIN: (1, 김철수, 인사팀), (2, 이영희, 개발팀)
- LEFT JOIN: (1, 김철수, 인사팀), (2, 이영희, 개발팀), (3, 박민수, NULL)
- RIGHT JOIN: (1, 김철수, 인사팀), (2, 이영희, 개발팀), (NULL, NULL, 회계팀)
- FULL JOIN: (1, 김철수, 인사팀), (2, 이영희, 개발팀), (3, 박민수, NULL), (NULL, NULL, 회계팀)
- CROSS JOIN: 모든 행을 조합 (3 × 3 = 9개 행)
'정보처리기사' 카테고리의 다른 글
2021회 3회 정보처리기사 실기 기출문제 정리 (0) | 2022.06.10 |
---|---|
(10) 애플리케이션 테스트 관리 (0) | 2022.06.08 |
(9) 소프트웨어 개발 보안 구축 (0) | 2022.06.08 |
(12) 제품 소프트웨어 패키징 (0) | 2022.06.08 |
(8) 서버프로그램 구현 (0) | 2022.06.08 |
댓글