2020041003 / 11_3) non-eqie join (비등가조인)
- ORACLE
- 2020. 4. 30.
-- *단원 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 명령어를 사용해서 추가한다
-- 위의 결과와 동일 // 컬럼명 앞에 테이블명을 기술하여 컬럼 소속을 명확히 밝힐 수 있도록 하는 방식이다
select emp.ename, dept.dname, dept.loc, emp.deptno -- deptno 를 emp,로 사용한다
from emp, dept
where emp.deptno = dept.deptno -- scott 만을 출력하고 싶을때 조건 추가는 and 명령어를 사용해서 추가한다
-- 테이블명에서 별칭 부여 시에는 as는 사용 불가
-- 별칭을 지정하고자 할 때에는 반드시 테이블명이 아닌 별칭으로 접근해야 한다
select e.ename, d.dname, d.loc, e.deptno
from emp e, dept d -- 별칭을 부여 할 수도 있다. 별칭을 부여 했을 경우, 위의 형식에 별칭을 부여 할 수 있다
where e.deptno = d.deptno
=====================================================================
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;
'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 |