-
오라클 SQL - JOIN웹프로그래밍/데이터베이스 2018. 7. 7. 16:20
--#CROSS JOIN - 두 테이블의 존재하는 모든 데이터를 조인
SELECT * FROM EMP, DEPT;
--#EQUI JOIN - 두 테이블의 공통인 칼럼의 값이 일치되는 행으로 결과를 낼때
SELECT E.ENAME, D.DNAME, E.DEPTNO, D.DEPTNO FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO;
--#Non-Equi Join - 두 테이블의 칼럼 값이 일치하지 않을때
SELECT E.ENAME, E.SAL, S.GRADE FROM EMP E, SALGRADE S WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;
SELECT E.ENAME, E.SAL, S.GRADE FROM EMP E, SALGRADE S WHERE E.SAL >= S.LOSAL AND E.SAL <= S.HISAL;
--#OUTER JOIN - 조건에 만족하지 않는 행을 추가로 나타낼때(조건절 모두 +해야함)
SELECT E.ENAME ,D.DEPTNO, D.DNAME FROM EMP E, DEPT D WHERE
E.DEPTNO(+) = D.DEPTNO ORDER BY D.DEPTNO;
--#SELF JOIN - 한 테이블의 있는 칼럼을 별칭으로 서로 다른 테이블 인것처럼 만듬
SELECT WORK.ENAME, MANAGER.ENAME FROM EMP WORK, EMP MANAGER WHERE WORK.MGR = MANAGER.EMPNO;
SELECT WORK.ENAME ||'의 매니저는 '||MANAGER.ENAME||'이다.' AS "그 사원의 매니져"
FROM EMP WORK, EMP MANAGER WHERE WORK.MGR = MANAGER.EMPNO;
--##ANSI JOIN
--#ANSI CROSS JOIN
--쉼표 대신 CROSS JOIN
SELECT * FROM EMP CROSS JOIN DEPT;
--#ANSI INNER JOIN
--공통 칼럼을 JOIN하는 경우 쉼표 대신 INNER JOIN
SELECT ENAME, DNAME FROM EMP INNER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO WHERE ENAME='SCOTT';
--#USING
--두 테이블 간 조인 조건에 사용되는 칼럼이 같다면
SELECT EMP.ENAME, DEPT.DNAME FROM EMP INNER JOIN DEPT USING (DEPTNO) WHERE ENAME='SCOTT';
--#NATURAL JOIN
--조건 절 생략하면 자동적으로 공통 칼럼을 조사하여 내부적으로 조인
SELECT ENAME, DNAME FROM EMP NATURAL JOIN DEPT WHERE ENAME='SCOTT';
--#OUTER JOIN
SELECT E.ENAME, D.DEPTNO, D.DNAME FROM EMP E RIGHT OUTER JOIN DEPT D ON E.DEPTNO = D.DEPTNO;
SELECT E.ENAME, D.DEPTNO, D.DNAME FROM EMP E FULL OUTER JOIN DEPT D ON E.DEPTNO = D.DEPTNO;
--#LEFT OUTER JOIN - 오른쪽 테이블(아래 예제에서 emp테이블)에 일치하는 컬럼의 행이 있는 경우 사용한다.
SELECT E.DEPTNO, D.DEPTNO FROM DEPT D LEFT OUTER JOIN EMP E ON D.DEPTNO = E.DEPTNO;
--#RIGHT OUTER JOIN - 위와 반대로 왼쪽 테이블..
SELECT E.DEPTNO, D.DEPTNO FROM EMP D RIGHT OUTER JOIN DEPT E ON D.DEPTNO = E.DEPTNO;
--#FULL OUTER JOIN - 양쪽 테이블 모두
SELECT E.DEPTNO, D.DEPTNO FROM EMP D FULL OUTER JOIN DEPT E ON D.DEPTNO = E.DEPTNO;
'웹프로그래밍 > 데이터베이스' 카테고리의 다른 글
vmware-ubuntu-mysql 5.7 외부 접속 설정하고 SQLyog로 MySql DB 연결하기 (0) 2018.11.20 오라클 SQL - 무결성 제약 조건 (0) 2018.06.21 오라클 SQL - 트랜잭션 (0) 2018.06.21 오라클 SQL - DML (0) 2018.06.20 오라클 SQL - DDL(테이블 생성, 변경, 삭제) (0) 2018.06.20