JOIN
- DEPTNO의 FK와 PK 관계를 통해서 각각에 해당하는 데이터를 찾아가서 정확한 결과만 나오게 한 것
select * from emp, dept;
위와 같은 방식으로 출력하면 join되는 것이 아니라 모든 조합 가능한 데이터가 조회되는 카디션 곱의 형태로 출력
- 각각 12, 4개의 행을 가졌는데 조회하면 48개의 행이 나타남
- 카티션 곱의 형태지만 에러는 나지 않음(48건)
- 12건 출력
- 사원 테이블에 해당하는 12건의 테이블에 해당하는 부서번호만 가져오는 것
- 테이블 연결을 =로 사용했기 때문에 등가조인(Equi Join)이라고 함
- 오라클 조인
- 이렇게 명확하게 표시해 주는 것이 좋음
- 형식은 다르지만 위와 결과는 같음
- ANSI JOIN
- 안시 조인의 방식으로 만들면 어떤 데이터베이스에서도 사용할수 있음
<문제>
- 조인을 하기 위해서는 먼저 각 테이블의 PK를 확인해야 함
- 그리고 공통되는 것이 있는 PK를 사용해서 조인을 시키면 됨
- 위 문제의 경우에는 STUDNO와 PROFNO가 PK였고, 공통되는 것이 교수번호였기 때문에 이를 사용해서 조인
<문제>
- department 테이블의 pk는 deptno
- 학생과 교수 테이블 모두 부서번호를 가지고 있기 때문에 둘 중 선택해서 조인시키면 됨
- 학생과 교수 테이블은 교수번호로 조인시키면 됨
- 서로 겹치는 피케이를 통해서 차례대로 조인시키면 조인이 가능하다
- 이건 오라클 조인 방식
<문제>
- 안시 조인에서 조건절 추가는 and로 넣어줌
<문제>
- 위는 안시, 아래는 오라클
<문제>
<문제>
- pk가 없는 두 테이블 간의 조인 문제였음
- 여기선 같은 조건으로 비교하는 것이 아니라 크기가 작고, 크고로 비교해서 조인해야 함
- 이런 조인을 비등가 조인이라고 함
<문제>
아우터 조인
- 등가 조인을 사용하면 원래는 null값을 제외하고 공통되는 것만 뽑아왔음
- 그런데 한 쪽이 null값인 것의 값도 뽑아오려면 null값인 쪽에 +를 주면 나머지 값도 가져올 수 있음
(오라클 조인으로 할 경우에는 +를 붙여주는 것 / 안시 조인은 방법이 다름)
- 위에서는 왼쪽에 있는 학생값의 값을 모두 가져오기 때문에 left join이라고도 말함
(오른쪽에 있는 것의 값을 가져오는 것은 right join)
- 즉 오라클 조인에서 아우터 조인을 사용할 때 +가 붙은 값을 기준으로 반대쪽의 값을 모두 가져오는 것
- 안씨 조인으로 사용한 레프트 아우터 조인
- left outer join 대신에 left join을 써도 똑같은 결과가 출력됨
<문제>
<문제>
<문제>
- 이건 오라클 조인
<문제 - 셀프 조인(SELF JOIN)>
- 한 테이블 안에 구하려는 모든 정보가 있을 경우에 사용
- 동일한 값을 가지는 데이터 값을 중심으로 조인
<문제>
<문제>