JOIN
조인이란 두 개 이상의 테이블을 서로 연결하여 하나의 결과를 만드는 것을 말합니다.
즉, 필요한 데이터가 여러 테이블에 흩어져 존재하는 경우에 조인을 이용해 데이터들을 결합할 수 있습니다.
조인은 분리된 데이터 간의 공통된 정보, 즉 동일한 칼럼 또는 키 기준으로 데이터를 논리적으로 연결합니다.
Inner Join
두 테이블에 공통된 데이터가 존재하는 행에 대해서만 조인을 수행하는 방법으로, 교집합에 해당합니다.
[명시적 방법] JOIN 키워드에 조인 대상 테이블을 작성하고 ON 절에는 조인할 비교조건 작성
SELECT 학생.학번, 학생.이름, 지도교수.교수명
FROM 학생
JOIN 지도교수
ON 학생.학번 = 지도교수.학번
[암시적 방법]
SELECT 학생.학번, 학생.이름, 지도교수.교수명
FROM 학생, 지도교수
WHERE 학생.학번 = 지도교수.학번
Left Outer Join
왼쪽 테이블 기준으로 오른쪽 테이블과 조인을 수행하지만, 조인 조건과 일치하지 않더라도 왼쪽 테이블의 결과는 최종 결과에 포함된다. 즉, 왼쪽 테이블의 모든 row에 대해서 join을 진행합니다..
SELECT 학생.학번, 학생.이름, 지도교수.교수명
FROM 학생
LEFT OUTER JOIN 지도교수
ON 학생.학번 = 지도교수.학번
Right Outer Join
오른쪽 테이블 기준으로 왼쪽 테이블과 조인하지만, 조인 조건과 일치하지 않더라도 오른쪽 테이블의 결과는 최종 결과에 포함됩니다.
보통 쿼리에서 왼쪽에 위치한 테이블 기준으로 조인을 수행하는 왼쪽 외부 조인을 사용하므로, 유지보수나 관리 편의성 측면에서 오른쪽 외부 조인으로 작성된 SQL 문은 왼쪽 외부 조인으로 변경해서 일관성있게 작성하는 것이 좋다.
Cross Join
수학적 관점에서 봤을 때 카르테시안 프로덕트라고 하는 곱집합 개념으로, 조인에 참여하는 테이블에서 발생할 수 있는 모든 조합을 찾아내어 반환합니다.
조인 연산과정의 시간적, 공간적 리소스 점유 측면에서 오버헤드가 발생할 수 있으므로 주의!
[명시적 방법]
SELECT 학생.학번, 학생.이름, 지도교수.학번, 지도교수.교수명
FROM 학생
CROSS JOIN 지도교수
[암시적 방법] WHERE 절의 조인 조건분이나 JOIN 키워드를 명시하지 않고 작성하면 교차 조인 수행
SELECT 학생.학번, 학생.이름, 지도교수.학번, 지도교수.교수명
FROM 학생, 지도교수
Natural Join
2개의 테이블에 동일한 칼럼명이 있을 때 조인 조건절을 따로 작성하지 않아도 자동으로 조인을 수행해주는 방식입니다.
조인이 제대로 성사되면 내부 조인과 동일한 결과가 출력되며, 이때 조인하는 칼럼들의 데이터 유형이 달라도 자연 조인이 수행됩니다.
[명시적 방법] 조인 조건절을 알아서 찾아주므로 직접적인 조인 조건문은 작성하지 않는다.
SELECT 학생.*, 지도교수.*
FROM 학생
NATURAL JOIN 지도교수
이때 만약 동일한 칼럼명이 없다면 발생 가능한 경우의 수를 모두 조합하는 교차 조인이 수행됩니다.
즉, 자연 조인은 동일한 칼럼명이 있을 때는 내부 조인으로 수행되고 그렇지 않으면 교차 조인으로 수행!!
자연 조인은 칼럼명 변경에 따라 출력 결과가 달라지며 의도치 않은 결과가 출력될 가능성이 높다.
'Computer Science > Database' 카테고리의 다른 글
트랜잭션과 ACID (0) | 2022.02.22 |
---|---|
`이상현상과 정규화 (0) | 2022.02.22 |
`서브쿼리와 뷰 (0) | 2022.02.19 |
테이블과 키 (0) | 2022.02.19 |
`DB 엔진과 SQL 수행 프로세스 (0) | 2022.02.19 |