IT STUDY LOG

[Oracle] JOIN - ANSI 조인 문장 본문

computer science/database

[Oracle] JOIN - ANSI 조인 문장

roheerumi 2023. 8. 31. 12:02

# 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