티스토리 뷰

it

오라클 조인

ITs Story biaos 2022. 8. 14. 23:32

8. 조인

:하나의 SQL 명령문에 의해 여러 테이블에 저장된 데이터를 한번에 조회할 수 있는 기능.

WHERE절을 이용한 EQUI JOIN

사용법

: SELECT table1.column, table2.column

FROM table1, table2

WHERE table1.column1 = table2.column2

학생테이블과 부서테이블을 EQUI JOIN 하여 학번, 이름, 학과번호, 소석학과 이름, 학과 위치를 출력

SELECT s.studno, s.name, s.deptno, d.dname, d.loc

FROM student s, department d

WHERE s.deptno=d.deptno;

자연조인(natural join)을 이용한 EQUI JOIN

: 자연조인 결과는 EQUI JOIN과 같지만 표현하는 문법은 다르다.

자연조인은 WHERE절을 사용하지 않고 NATURAL JOIN 이라는 키워드를 사용한다.

또한 NATURAL JOIN 절에서는 조인 애트리뷰트에 테이블 별명을 사용하면 오류가 발생하므로 주의해야 한다.

# EQUI JOIN에서 연결 고리가 되는 공통 칼럼을 조인 애트리뷰트(join attribute) 라고 한다



조인 애트리뷰트에 테이블 별명을 사용하지 않은경우

: SELECT s.studno, s.name, deptno, d.dname

FROM student s

NATURAL JOIN department d;



EQUI JOIN을 사용하여 4학년 학생의 이름, 학과 번호와 학과 이름을 출력

  1. WHERE절을 이용

SELECT s.name, s.grade, s.deptno, d.dname

FROM student s, department d

WHERE s.deptno = d.deptno

AND s.grade='4';

  1. NATURAL JOIN을 이용

SELECT s.name, s.grade, deptno, d.dname

FROM student s NATURAL JOIN department d

WHERE grade='4';

EQUI JOIN의 또다른 방법 JOIN~USING

: USING절에 조인 대상 칼럼을 지정하여 자연조인을 한다.(명시적 으로 지정하여 EQUI JOIN 실행) - 이때 칼럼 이름은 조인 대상 테이블에서 동일한 이름으로 정의되어 있어야 한다. 한가지 주의점은 조인 애트리뷰트에서 테이블 별명을 사용하면 오류가 발생한다.

사용법

: SELECT table1.column, table2.column

FROM table1 JOIN table2

USING (column);

JOIN~USING절을 이용하여 학번, 이름, 학과 번호, 학과 이름, 학과 위치를 출력

다음 두 질의문은 동일한 조건문.

SELECT s.studno, s.name, deptno, d.dname, d.loc

FROM student s JOIN department d USING (deptno);

SELECT studno, name, deptno, dname, loc

FROM student JOIN department USING (deptno);

EQUI JOIN 3가지 방법을 이용하여 성이 ‘김’씨인 학생들의 이름,학과,학과위치 출력

  1. WHERE절을 이용한 EQUI JOIN

SELECT name, dname, loc

FROM student s, department d

WHERE s.deptno = d.deptno

AND name like '김%';



  1. NATURAL JOIN을 이용한 EQUI JOIN

SELECT s.name, d.dname, d.loc

FROM student s NATURAL JOIN department d

WHERE name like '김%';




  1. JOIN~USING절을 이용한 EQUI JOIN

SELECT name, dname, loc

FROM student JOIN department

USING (deptno)

WHERE name like '김%';

NON-EQUI JOIN

: 조인 조건에서 <, BETWEEN a AND B 와같이 ‘=’조건이 아닌 다른 종류의 연산자를 사용하는 조인 방법이다.

교수 테이블과 급여 등급 테이블을 NON-EQUI JOIN하여 교수별로 등급을 출력

SELECT p.profno, p.name, p.sal, s.grade

FROM professor p, salgrade s

WHERE p.sal BETWEEN s.losal AND s.hisal;



OUTER JOIN

EQUI JOIN에서 양측 칼럼 값중의 하나가 NULL이지만 조인 결과로 출력할 필요가 있는 경우가 발생한다. 이런 경우 OUTER JOIN을 사용.

OUTER JOIN은 조인 조건의 양측 칼럼 값 중에서 하나가 NULL인 경우에도 조인 결과로 출력 할 수 있는 조인 방법이다.

사용법

: SELECT table1.column, table2.column

FROM table1, table2

WHERE table1.column(+) = table2.column (table1.column 의 값이 NULL인경우 출력)

또는 table1.column = table2.column(+) (table2.column 의 값이 NULL인경우 출력)

LEFT OUTER JOIN

FROM절의 왼쪽에 위치한 테이블이 NULL값을 가질 경우 사용하며 WHERE 절의 오른편에 + 기호를 추가한 것과 동일한 의미이다.

지도교수가 배정되지 않은 학생명단 출력

SELECT studno, s.profno, p.name

FROM student s

LEFT OUTER JOIN professor p

ON s.profno = p.profno;

=

SELECT studno, s.profno, p.name

FROM student s, professor p

WHERE s.profno = p.profno(+);

FULL OUTER JOIN

LEFT OUTER JOIN과 RIGHT JOIN을 동시에 실행한 결과를 출력

지도교수가 없는 학생과 지도학생이 배정되지 않은 교수를 함께 출력



SELECT studno, s.name, s.profno, p.name

FROM student s

FULL OUTER JOIN professor p ON s.profno=p.profno;




SELF JOIN

한 테이블에서 두개의 칼럼을 연결하여 EQUI JOIN할 하는 조인 방식

WHERE 절을 사용한 SELF JOIN 방법과 JOIN~ON절을 사용하는 방법이 있음

부서테이블에서 SELF JOIN을 이용하여 부서이름과 상위 부서 이름 출력

WHERE 절을 사용한 SELF JOIN

SELECT dept.dname||'의 소속은'|| org.dname

FROM department dept, department org

WHERE dept.college = org.deptno;

JOIN-ON 절을 사용한 SELF JOIN

SELECT dept.dname||'의 소속은'|| org.dname

FROM department dept JOIN department org

ON dept.college = org.deptno;

'it' 카테고리의 다른 글

오라클 데이터 조작어 DML  (0) 2022.08.14
오라클 서브쿼리  (0) 2022.08.14
LISP 특징 / LISP 장단점  (0) 2022.08.13
LISP 탄생배경 / 리스프 개요 / 리스프 탄생배경  (0) 2022.08.13
LISP란? / 고급언어 종류  (0) 2022.08.13
댓글