오라클 SQL과 PL/SQL - JOIN

zooyeong·2023년 4월 19일
0

12주차

목록 보기
2/6
post-thumbnail

📌JOIN

JOIN이란 두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법이다. 두 개의 테이블을 마치 하나의 테이블인 것처럼 보여준다. 사용되는 테이블 중 하나의 테이블을 먼저 읽고 조인 조건 절을 확인하여 나머지 테이블에 가서 데이터를 가져 오게 되는데 이를 선행 테이블(inner table)후행 테이블(outer table) 이라고 한다. 선행 테이블은 조회할 데이터가 적은 테이블로 선택하는 것이 속도 면에서 유리하다.
컬럼을 가져올 때 양쪽 모두 존재하는 컬럼일 경우 반드시 테이블 이름을 함께 사용한다.
테이블명.컬럼명

💡INNER JOIN

student 테이블과 professor 테이블에 name이라는 컬럼이 둘 다 존재할 때 테이블명을 지정해주지 않으면 아래와 같이 '열의 정의가 애매하다'는 오류가 발생한다.

▲오류 발생

▲정상 조회(Oracle Join 구문)

▲ANSI Join 구문으로 조회

※그런데 student 테이블은 20명인데 15명만 조회되었다. 5명의 학생은 교수번호가 null값을 가지고 있어 매칭되는 값이 없기 때문이다. 이 경우 INNER JOIN을 사용하면 위 처럼 교수번호가 null값인 학생은 조회되지 않고, OUTER JOIN을 사용하면 조회할 수 있다.

💡OUTER JOIN

OUTER JOIN은 조인하는 여러 테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것이다. 즉, 조건에 맞지 않아도 해당하는 행을 출력하고 싶을 때 사용할 수 있다.
WHERE 테이블명.컬럼명 = 테이블명2.컬럼명(+)

▲오라클 OUTER JOIN 문법으로 조회
-> INNER JOIN 시 조회되지 않았던 값들도 다 조회가 되었다.

▲ANSI OUTER JOIN 문법으로 조회

💡SELF JOIN

SELF JOIN이란 동일 테이블 사이의 조인이다. 따라서 FROM 절에 동일 테이블이 두 번 이상 나타나게 된다. 동일 테이블 사이의 조인을 수행하면 테이블과 컬럼 이름이 모두 동일하기 때문에 반드시 테이블 별칭을 사용해야 한다.

emp 테이블을 살펴보면 'empno' 컬럼이 있고 'mgr' 컬럼이 있다.

'mgr'컬럼(상사번호)을 조인해서 상사의 이름을 가져와보도록 하겠다.

e1테이블(직원 정보 조회용)의 mgr 컬럼을 e2테이블(상사 정보 조회용)의 empno 컬럼으로 join해서 상사의 이름을 가져올 수 있다.

profile
Have a good day ⌯’▾’⌯

0개의 댓글