728x90
ORACLE JOIN
CROSS JOIN
특정한 조건(WHERE)을 주지 않는다면 조인시 각 테이블이 갖는 행의 수를
곱한 형태의 결과가 출력
SELECT ename, dname FROM emp,dept;--> 결과행 56행
EQUI JOIN
조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이 일치하는 행을
WHERE로 연결하여 결과를 생성하는 조인
SELECT ename, sal, loc FROM emp, dept
WHERE emp.deptno = dept.deptno and loc ='NEW YORK';
SELECT ename, TO_CHAR(hiredate,'yyyy/mm/dd') hiredate, dname FROM emp, dept
WHERE emp.deptno = dept.deptno and dname = 'ACCOUNTING';
SELECT ename, dname, job FROM emp, dept
WHERE emp.deptno = dept.deptno and job='MANAGER';
NON-EQUI JOIN
특정 범위 내에 있는 값을 조회하기 위해 (대소)비교연산자 사용
SELECT empno, ename, sal, grade, dnameFROM emp, dept, salgrade
WHERE ename = 'ALLEN' AND emp.deptno = dept.deptno
AND sal between losal AND hisal ORDER BY sal;
SELF JOIN
마치 같은 테이블이 두개인 것처럼 자기 자신테이블과 조인하는 것
SELECT e1.empno, e1.ename, e1.sal,e1.mgr, e2.ename FROM emp e1,emp e2
WHERE e1.ename='SCOTT' and e1.mgr = e2.empno;
SELECT e1.ename, e2.ename FROM emp e1, emp e2
WHERE e1.ename = 'SCOTT' ande1.deptno = e2.deptno;
OUTER JOIN
테이블 조인 중 한쪽테이블에 존재하지 않는 데이터로 인해서 출력되지 않는 행을 출력하고 싶을 때 사용'(+)' 기호 사용
(전체사원)각 사원의 이름과 그 사원의 직속 상사이름을 출력하시오
SELECT e1.ename 사원명, e2.ename 직속상사명 FROM emp e1, emp e2
WHERE e1.mgr = e2.empno(+);
ANSI JOIN (9i부터)
=> DBMS 종류와 상관없이 실행되는 표준 조인
ANSI Cross JOIN
SELECT empno, ename, dname FROM emp CROSS JOIN dept;
ANSI Inner Join
-
테이블 사이에 inner join 사용
-
동등 조건식 ON(조건절) 뒤에 사용 (생략불가)
-
WHERE절 추가하는 것 가능
-
ON절에 동등비교와 추가적인 조건식을 기술 가능
-
USING(공통컬럼명) //ON절 대신 사용
단, USING절 사용시 특정 테이블이 아닌 USING절에서 정의한 deptno 컬럼명만 사용SELECT empno, ename, dname FROM emp INNER JOIN dept ON emp.deptno = dept.deptno; SELECT empno, ename, dname FROM emp INNER JOIN dept ON emp.deptno = dept.deptno WHERE ename = 'JAMES'; SELECT empno, ename, dname FROM emp INNER JOIN dept USING(deptno); SELECT empno, ename, emp.deptno, dname FROM emp INNER JOIN dept USING(deptno); --에러발생
NATURAL JOIN
- 두 테이블이 갖는 컬럼중 공통된 이름의 컬럼을 동등조건해줌
SELECT empno, ename, dname FROM emp NATURAL JOIN dept; SELECT empno, ename, dname FROM emp NATURAL JOIN dept WHERE ename = 'ADAMS';
ANSI OUTER JOIN
-
조건에 맞지 않아도 해당하는 행을 출력하고 싶을 때 사용
-
LEFT OUTER JOIN: 조인문의 왼쪽에 있는 테이블의 모든 결과를 가져 온 후
오른쪽 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL로 표시 -
조건절은 ON 사용
-
LEFT RIGHT FULL 사용시 OUTER 생략가능
FROM 테이블명1 (LEFT | RIGHT | FULL) [OUTER] JOIN 테이블명2
'Web develop > SQL' 카테고리의 다른 글
[SQL/ORACLE] CASCADE 사용법 및 예제 (0) | 2019.06.15 |
---|---|
[SQL/ORACLE] 서브쿼리 , 다중행 서브쿼리 연산자 (0) | 2019.06.15 |
[SQL/ORACLE] CASE 함수 사용예제 (Simple / Searched) (0) | 2019.05.29 |
[SQL/ORACLE] 그룹함수, DECODE 함수 (1) | 2019.05.29 |
[SQL/ORACLE] 날짜 함수 , 형변환 함수 (0) | 2019.05.28 |