2020041003 / 11_3) non-eqie join (비등가조인)

-- *단원 11_join(조인)


두 개 이상의 테이블에 나뉘어져 있는 데이터를 한 번의 sql문으로 원하는 결과를 얻을 수 있는 기능(이름이 scott인 사원의 부서명 출력)


종류

1) cross join : 2개 이상의 테이블이 조인될 때 where절에 의해 공통되는 컬럼에 의한 결합이 발생하지 않는 경우를 의미

2) equi join : 조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이 일치되는 행을 연결하여 결과를 생성하는 방법

3) non-equi join : 동일 컬럼이 없이 다른 조건을 사용하여 join. 조인 조건에 특정 범위 내에 있는지를 조사 하기 위해서 조건절에 조인 조건을 = 연산자 이외의 비교 연산자를 이용

4) self join : 하나의 테이블 내에서, 자기 자신과 조인을 통해 원하는 자료를 얻는 방법

5) outer join : 조인 조건에 만족하지 못해서 해당 결과를 출력시에 누락이 되는 문제점이 발생된다. 해당 레코드(row)를 출력하고 싶을 때 사용하는 join 방법


join 종류

equi join : 

equi join :

equi join :

equi join :




-- [1] 'SCOTT'이 근무하는 부서명, 지역 출력

-- 이 문제의 예시는 원하는 정보가 두 개 이상의 테이블에 나뉘어져 있을 때 결과 출력


select deptno from emp

where ename = 'SCOTT';


select dname, loc from dept

where deptno = 20;


-- [2] join

-- 1) cross join

select * from emp, dept;


-- 2) eqie join (이퀴 조인) (등가조인)

select * from emp, dept

where emp.deptno = dept.deptno; -- 주의 콤마(.) 로 구분한다


-- 'SCOTT'이 근무하는 부서명, 지역 출력

select ename, deptno, loc, deptno -- deptno 는  emp, dept 모두 동일 컬럼을 가지고 있으므로 error

from emp, dept


select ename, dname, loc, emp.deptno -- deptno 를  emp,로 사용한다

from emp, dept

where emp.deptno = dept.deptno  -- scott 만을 출력하고 싶을때 조건 추가는 and 명령어를 사용해서 추가한다

and ename = 'SCOTT';


-- 위의 결과와 동일 // 컬럼명 앞에 테이블명을 기술하여 컬럼 소속을 명확히 밝힐 수 있도록 하는 방식이다 

select emp.ename, dept.dname, dept.loc, emp.deptno -- deptno 를  emp,로 사용한다

from emp, dept

where emp.deptno = dept.deptno  -- scott 만을 출력하고 싶을때 조건 추가는 and 명령어를 사용해서 추가한다

and ename = 'SCOTT';

--  테이블명에서 별칭 부여 시에는 as는 사용 불가

-- 별칭을 지정하고자 할 때에는 반드시 테이블명이 아닌 별칭으로 접근해야 한다

select e.ename, d.dname, d.loc, e.deptno 

from emp e, dept d -- 별칭을 부여 할 수도 있다. 별칭을 부여 했을 경우, 위의 형식에 별칭을 부여 할 수 있다

where e.deptno = d.deptno 

and ename = 'SCOTT';


=====================================================================



3) non-eqie join (비등가조인) -- 2개 이상의 테이블에 사용이 가능하다

select * from tab;

select * from emp;

select * from salgrade; -- 이것만 먼저 실행해 본다 // 3개 컬럼 5개 레코드가 담겨져 있다 // 급여에 대한 등급 정보


select ename, sal, grade

from emp, salgrade

where sal >= losal and sal <= hisal;


-- between a and b 구문 사용 가능, 위와 동일한 결과가 출력된다

select ename, sal, grade

from emp, salgrade

where sal between losal and hisal;



-- 실습
-- emp, dept, salgrade 2개의 테이블 join -- 2개 이상의 테이블에 사용이 가능하다
select ename, sal, grade, dname
from emp, dept, salgrade
where emp.deptno = dept.deptno
and sal >= losal and sal <= hisal;


4) self join






























'ORACLE' 카테고리의 다른 글

0416 - 03 - eXERD 사용법  (0) 2020.04.30
2020040903 / DICR(Data Integrity Constraint Rule)  (0) 2020.04.30
2020041402 / 인덱스(index)  (0) 2020.04.30
2020041302 / 뷰(View)  (0) 2020.04.30
2020040902 - Transaction (트랜잭션)  (0) 2020.04.30

댓글

Designed by JB FACTORY