본문 바로가기

Study/OracleDB

19강 오라클 SQL JOIN DATA

728x90

-- 조인의 필요성, Cross Join, Equi Join, Non-EquiJoin

-- 특정 부서 번호에 대한 부서이름이 무엇인지는 부서(DEPT)테이블에 있다.
-- 특정 사원에 대한 부서명을 알아내기 위해서는 부서 테이블에서 정보를 얻어와야 한다.
select ename, deptno from emp;

-- 10번 20번 30번의 부서명을 알기 위해 dept를 조회해야 한다.
select deptno, dname from dept;

-- Cross Join
select * from emp, dept;
-- 사원 한 명에 대해서 DEPT 테이블 4개의 로우와 결합된 형태이기에 
-- Cross Join의 결과는 아무런 의미를 갖지 못합니다.

-- Equi Join
-- 가장 많이 사용하는 조인 방법으로서 조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이
-- 일치되는 행을 연결하여 결과를 생성하는 조인 방법입니다.

-- 다음은 사원 정보를 출력할 때 각 사원들이 소속된 부서의 상세 정보를 출력하기 위해
-- 두 개의 테이블을 조인한 예입니다.
select * from emp, dept where emp.deptno=dept.deptno;
-- emp.deptno 부서번호와 dept.deptno의 부서번호가 같은 것을 찾아라.

-- 3.1 Equi Join에 AND 연산하기
-- 이름이 SCOTT인 사람의 부서명을 출력해봅시다.
select ename, dname 
from emp, dept 
where emp.deptno=dept.deptno 
and ename='SCOTT';

-- 3.2 두 테이블에 동일한 이름의 칼럼을 사용하면 어느 테이블 소속인지 불분명하기에
-- 애매모호한 상태라는 오류 메세지가 출력된다.
select ename, dname, deptno
                 -- 애 매 모 호 해 !(column ambiguously defined)
                 -- 어느 테이블 소속인지 불분명한 컬럼, emp에도 있고 dept에도 있어서
from emp, dept
where emp.deptno=dept.deptno
and ename='SOCTT';

-- 정확하게 기재하여 분명한다.
select emp.ename, dept.dname, emp.deptno
from emp, dept 
where emp.deptno=dept.deptno 
and ename='SCOTT';

-- 3.3 테이블 별칭 부여하기.
select e.ename, d.dname, e.deptno, d.deptno
from emp e, dept d
where e.deptno=d.deptno
and e.ename='SCOTT';

-- <탄탄히 다지기>
-- 1. 뉴욕에서 근무하는 사원의 이름과 급여를 출력하시오
select emp.ename, emp.sal 
from emp, dept 
where emp.deptno = dept.deptno 
and dept.loc = 'NEW YORK';

-- 2. ACCOUNTING 부서 소속 사원의 이름과 입사일을 출력하시오.
select emp.ename, emp.hiredate
from emp, dept
where emp.deptno=dept.deptno
and dept.dname='ACCOUNTING';

-- 3. 직급이 MANAGER인 사원의 이름, 부서명을 출력하시오.
select emp.ename, dept.dname
from emp, dept
where emp.deptno=dept.deptno and emp.job='MANAGER';

-- 04. Non-EquiJoin
-- 조인 조건에 특정 범위 내에 있는지를 조사하기 위해서 WHERE 절에 조인 조건을
-- 연산자 이외의 비교 연산자를 사용합니다.

-- 사원의 급여가 몇 등급인지 살펴보는 예제.
select ename, sal, grade 
from emp, salgrade
where sal between losal and hisal;
-- between 비교연산자

반응형

'Study > OracleDB' 카테고리의 다른 글

21강 오라클 SQL Outer Join  (1) 2022.09.10
20강 오라클 SQL Self Join  (4) 2022.09.09
18강 오라클 SQL HAVING 절  (1) 2022.09.09
17강 오라클 SQL GROUP BY 절  (1) 2022.09.09
16강 오라클 SQL 그룹 함수 집계 데이터  (4) 2022.09.09