IT STUDY LOG
[Oracle] JOIN - ANSI 조인 문장 본문
# ANSI 조인
INNER JOIN 사용 방법
ON절 사용
- 조인 조건 절에 컬럼 명시 가능
- 조인 조건에 동등 연산자 이외의 연산자 또한 사용 가능
- 조인 조건에서 사용할 컬럼명이 테이블에 따라 달라도 사용 가능
SELECT e.empno, e.ename, d.deptno, d.dname
FROM emp e INNER JOIN dept d -- INNER 키워드가 default
ON e.deptno = d.deptno
WHERE e.sal >= 3000;
USING절 사용
- 조인 조건 절에 컬럼 명시 가능
- USING 절에서 사용되는 컬럼은 SELECT, GROUP BY, ORDER BY 절 등에 테이블 이름, ALIAS를 가질 수 없음
SELECT e.empno, e.ename, deptno, d.dname
FROM emp e JOIN dept d
USING (deptno)
WHERE e.sal >= 3000;
NATURAL JOIN
- 조인 조건 기술 불가능하며, 테이블간 컬럼명+데이터 타입이 일치하는 모든 열을 사용해 조인
SELECT *
FROM emp e NATURAL JOIN dept d;
OUTER JOIN
-- LEFT OUTER JOIN
SELECT e.empno, e.ename, d.deptno, d.dname
FROM emp e LEFT OUTER JOIN dept d
ON e.deptno = d.deptno;
-- RIGHT OUTER JOIN
SELECT e.empno, e.ename, d.deptno, d.dname
FROM emp e RIGHT OUTER JOIN dept d
ON e.deptno = d.deptno;
-- FULL OUTER JOIN
SELECT e.empno, e.ename, d.deptno, d.dname
FROM emp e FULL OUTER JOIN dept d
ON e.deptno = d.deptno;
-- (1) 한쪽 테이블에 걸리는 비조인조건을 AND에 사용했을 경우 OUTER JOIN으로 동작
SELECT e.empno, e.ename, d.deptno, d.dname
FROM emp e FULL OUTER JOIN dept d
ON e.deptno = d.deptno
AND d.dname = 'SALES';
-- (2) 한쪽 테이블에 걸리는 비조인조건을 WHERE에 사용했을 경우 INNER JOIN으로 동작
SELECT e.empno, e.ename, d.deptno, d.dname
FROM emp e FULL OUTER JOIN dept d
ON e.deptno = d.deptno
WHERE d.dname = 'SALES';
CROSS JOIN
- 조건 절이 없으며 카타시안곱과 같이 동작
SELECT *
FROM emp e CROSS JOIN dept d;
3개 이상의 테이블 조인
SELECT *
FROM emp e JOIN dept d
ON e.deptno = d.deptno
JOIN salgrade s
ON e.sal BETWEEN s.losal AND s.hisal;
연습문제
부서번호, 부서명, 근무인원수, 평균급여(정수표현) 출력
SELECT d.deptno, d.dname, count(*), FLOOR(AVG(e.sal))
FROM dept d JOIN emp e
ON d.deptno = e.deptno
GROUP BY d.deptno, d.dname;
'computer science > database' 카테고리의 다른 글
[Oracle] 그룹함수 - GROUP BY의 확장 (0) | 2023.08.31 |
---|---|
[Oracle] SET 연산자 (0) | 2023.08.31 |
[Oracle] JOIN - ORACLE 조인 문장 (0) | 2023.08.31 |
[Oracle] JOIN (0) | 2023.08.31 |
[Oracle] 그룹 함수 기본 (0) | 2023.08.30 |
Comments