내부조인(InnerJoin)
- 동등 조인의 결과 릴레이션 차수는 첫 번째 릴레이션과 두 번째 릴레이션의 차수를 합한 것
- 교집합
SELECT *
FROM employee INNER JOIN department ON employee.departmentId = department.id;
외부조인
- 교집합 연산 결과와 차집합 연산 결과를 합친 것
- 공통된 속성을 매개로 하는 정보가 아니더라도 버리지않고 연산의 결과 릴레이션에 정보를 남겨둠
- 왼쪽 외부 조인
- 왼쪽 튜플 기준으로 자연 조인시 실패한 튜플을 모두 보여주되 값이 없는 대응 속성에는 null 값을 채워서 반환한다.
SELECT *
FROM employee LEFT OUTER JOIN department ON employee.departmentId = department.id;
- 오른쪽 외부 조인
- 오른쪽 튜플 기준으로 자연 조인 시 실패한 튜플을 모두 보여주되 값이 없는 대응 속성에는 NULL 값을 채워서 반환한다.
SELECT *
FROM employee RIGHT OUTER JOIN department ON employee.departmentId = department.id;
- 완전 외부 조인
- 양쪽 튜플 기준으로 자연 조인 시 실패한 튜플을 모두 보여주되 값이 없는 대응 속성에는 NULL 값을 채워서 반환한다.
SELECT *
FROM employee OUTER JOIN department ON employee.departmentId = department.id;
이미지로 이해하면 좋습니다.

세미 조인
- 자연 조인을 한 후 두 릴레이션 중 한쪽 릴레이션의 결과만 반환.
- 세미 조인은 기호에서 닫힌 쪽 릴레이션의 튜플만 반환.
- A, B가 조인될 경우 A와 조인될 가능성이 있는 B의 튜플만을 골라 전송하는 연산으로, 자연 조인 후 어느 한쪽 릴레이션의 애트리뷰트만을 프로젝트.
- 서브쿼리를 이용한 조인이라고 이해하면 쉬움.
SELECT *
FROM STUDENT
WHERE STUDENT.classroom = (SELECT classroomnumber
FROM teacher where teacher.name = "MARK")
교차조인
셀프조인
- 같은 두 릴레이션을 활용하여 데이터를 추출하는 방법
세타조인
- 조인에 참여하는 두 릴레이션의 속성값을 비교하여 특정 조건을 만족하는 튜플만 반환한다.
- 비교 연산자를 사용할 수 있는 조인의 일종으로 join이라는 키워드를 사용하지 않는 조인
- 조건 : =, !=, >=, <=, >, <
동일조인
- 세티조인에서 비교연산자가 = 인 경우로 조인에 관련된 모든 속성을 중복인 것까지 포함
자연조인
- 동등조인에서 조인에 참여한 속성이 두 번 나오지 않도록 중복된 속성을 제거한 결과를 반환
- 차수는 두 릴레이션의 차수의 합 - 중복된 속성의 수
- 동일 조인의 결과에서 중복되는 속성을 제거한 릴레이션
참고
https://hongong.hanbit.co.kr/sql-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-joininner-outer-cross-self-join/