여러개의 테이블을 결합시켜 원하는 데이터를 가져오는 것
ORACLE JOIN을 의미기본형태
SELECT 컬럼명1,컬럼명2,.. FROM 테이블명1,테이블명2 WHERE 조인조건;
학번 | 이름 | 전화번호 | 주소 |
---|---|---|---|
1 | 최ㅇㅇ | 010-0000-0000 | 인천 |
2 | 김ㅇㅇ | 010-1111-1111 | 대구 |
학번 | 과목 | 점수 |
---|---|---|
1 | 국어 | 100 |
2 | 영어 | 100 |
3.성적표 (테이블3)
학번 | 이름 | 과목 | 점수 |
---|---|---|---|
1 | 최ㅇㅇ | 국어 | 100 |
2 | 김ㅇㅇ | 영어 | 100 |
- WHERE절에 공통컬럼들이 동등연산자(=)에 의해 결합되는 조인
위의 예시 테이블은 학번이라는 공통컬럼이 존재하므로 조인할때 동등연산자를 사용하여 결합시킨다
SELECT S.SNUM,S.SNAME,G.SUBJECT,G.SCORE
FROM STUDENT S,GRADE G
WHERE S.SNUM=G.SNUM;
- 공통컬럼이 존재하지 않아도 결합되는 경우의 조인
- 비교연산자에 의해 결합 가능
- 3개이상의 테이블 조인시 AND로 묶어서 결합 가능
- 결합조건이 없는 경우의 조인 (실질적으로 거의 사용 x)
- 참조해야 하는 컬럼이 자신의 테이블의 다른 컬럼인 경우 사용되는 조인
이 경우, 똑같은 테이블을 E1,E2로 나눠서 참조한다.
SELECT E1.EMPNO,E1.ENAME,E1.MGR,E2.ENAME
FROM EMP E1,EMP E2
WHERE E1.MGR=E2.EMPNO;
EMPNO ENAME MGR ENAME
7902 FORD 7566 JONES
7900 JAMES 7698 BLAKE
7844 TURNER 7698 BLAKE
7521 WARD 7698 BLAKE
7654 MARTIN 7698 BLAKE
7499 ALLEN 7698 BLAKE
7934 MILLER 7782 CLARK
7782 CLARK 7839 KING
7566 JONES 7839 KING
7698 BLAKE 7839 KING
7369 SMITH 7902 FORD
- 한쪽 테이블에는 해당하는 데이터가 존재하는데 다른쪽 테이블에는 데이터가 존재하지 않는 경우 모든 데이터를 추출하는 조인방법
- WHERE 조건절에서 데이터가 없는 쪽에 (+)표시를 추가하면 된다.
SELECT D.DEPTNO,D.DNAME,E.ENAME
FROM DEPT D,EMP E
WHERE D.DEPTNO=E.DEPTNO(+);
EMP테이블의 DEPTNO는 10,20,30만 있고,DEPT 테이블의 DEPTNO는 10,20,30,40까지 있음
-그런데 모든 데이터를 출력하려고 하므로 DEPTNO 40이 없는 E.DEPTNO에 E.DEPTNO(+) 라고 (+)를 붙여야함
결과