본문 바로가기

SQL

조인(join)

조인(JOIN):두 개 이상의 테이블간의 결합
1.내부 조인(INNER): 동일(EQUI)조인, 비동일(NON-EQUI)조인

 

-오라클 조인(오라클에서만 사용 가능) 
SELECT ENAME,SAL,DEPT.DEPTNO,DNAME FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO;

 

-표준 SQL 조인
SELECT E.ENAME, E.SAL, D.DEPTNO, D.DNAME
FROM EMP E INNER 

JOIN DEPT D
ON E.DEPTNO=D.DEPTNO -- 조인 조건
WHERE E.ENAME='FORD'; -- 일반조건

 

-내부 조인(비동일 조인)

-> 비동일 조인이란? 동등비교를 사용하지 않는 조인을 말한다.
SELECT * FROM SALGRADE;


--사번,이름,급여,호봉 
SELECT E.EMPNO,E.ENAME,E.SAL,S.GRADE 
FROM EMP E INNER 

JOIN SALGRADE S
ON E.SAL BETWEEN S.LOSAL AND S.HISAL;

->emp 테이블의 sal과 grade과 조인

 

--사원이름,급여,부서명,호봉을 출력
SELECT E.ENAME,E.SAL,S.GRADE, D.DNAME 
FROM EMP E 
JOIN SALGRADE S
ON E.SAL BETWEEN S.LOSAL AND S.HISAL
JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
WHERE SAL>=1000;


-내부조인(SELF): 자기 자신과 조인

 

-사원이름, 상사이름 검색
SELECT E.ENAME, E.MGR,E2.ENAME
FROM EMP E
JOIN EMP E2
ON E.MGR=E2.EMPNO;

 

외부 조인(OUTER): LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN

 

--오라클 조인 : 조인 조건을 where절에 준다

SELECT E.ENAME 직원, M.ENAME 상사
FROM EMP E, EMP M
WHERE E.MGR=M.EMPNO(+);

--표준 조인 
SELECT E.ENAME 직원, M.ENAME 상사
FROM EMP E 

LEFT OUTER JOIN EMP M
ON E.MGR=M.EMPNO;

-사원이름, 부서이름 (직원이 없는 부서까지 출력)
SELECT E.ENAME, D.DNAME
FROM EMP E
RIGHT OUTER JOIN DEPT D
ON E.DEPTNO=D.DEPTNO;

--사원이름, 부서번호(단, 해당사원과 같은 부서에 근무하는 사원 검색)
--SELF 조인
SELECT E.ENAME 본인, E.DEPTNO 본인부서, C.ENAME 동료, C.DEPTNO 동료부서
FROM EMP E
JOIN EMP C
ON E.DEPTNO=C.DEPTNO
WHERE E.ENAME<>C.ENAME --본인 배제
ORDER BY E.ENAME;

 

 

 

'SQL' 카테고리의 다른 글

상관관계 서브쿼리  (0) 2019.12.26
서브쿼리  (0) 2019.12.26
GROUP BY ,HAVING, ORDER BY 절, SELECT문 검색 순서  (0) 2019.12.24
오라클 그룹함수(MAX,MIN,SUM,AVG ,COUNT)  (0) 2019.12.24
오라클의 ELSE-IF(DECODE 함수, CASE 함수)  (0) 2019.12.24