*.Join
- join의 개념
- join의 종류
*.카르테시안 product 기법(기본)
Cross조인(모든 정보를 보여줌)
ex)
select * from emp, dept;
ex)
select * from emp cross join dept;
ex)
SQL> select ename, deptno, dname
  2  from emp,dept
  3  ;
select ename, deptno, dname
              *
1행에 오류:
ORA-00918: 열의 정의가 애매합니다
-- 어느테이블 소유인것인지 명확하게 해주면 해결
-- "."(dot)을 이용해서 사용.
table명.컬럼명

SQL>
select emp.ename, emp.deptno, dept.dname
from emp,dept

- 테이블명 단축도 가능(alias사용가능-테이블은 공백만사용)
select a.ename, a.deptno, b.dname
from emp a, dept b


*.EQUI Join 기법 : 동일한 값으로 조인하는방법
1.각 테이블의 동일한값을 where에 =로 명시 [where 에 동일값 표시]
ex)
select emp.ename, emp.deptno, dept.dname
from emp,dept
where emp.deptno = dept.deptno

2.join ~ on : from절에 테이블명 join ~ on 비교될 컬럼명.
ex)
select e.ename, e.deptno, d.dname
from emp e join dept d on e.deptno = d.deptno

3.join ~ using(~) : from절에 테이블명 join ~ using(컬럼명) 사용가능
ex)
select e.ename, deptno, d.dname
from emp e join dept d using(deptno)

4.natural join : Oracle에 알아서 명시해라.
select e.ename, deptno, d.dname
from emp e natural join dept d


*.Non-EQUI Join 기법 : 특정범위값으로 조인하는 방법
 -- 사원명, 급여, 급여등급(등급당 최저급여, 등급당 최급여) 조회
select a.ename, a.sal, b.grade, b.losal, b.hisal
from emp a, salgrade b
where a.sal between b.losal and b.hisal


Posted by 말없제이
,