C#,Delphi,Oracle,MSSQL 개발자블로그
[Oracle/기본]4. 다중 테이블로부터 데이터 디스플레이 본문
● JOIN
1. SELECT문을 작성할 때, 명확성을 위해서 그리고 데이터베이스 엑세스를 향상시키기 위해서 열 이름 앞에 테이블 명을 붙인다.
2. 똑같은 열 이름이 하나 이상의 테이블에 있으면, 열 이름 앞에 테이블 명이 있어야 한다.
3. n개의 테이블을 함께 조인하려면 최소 (n-1)개의 조인 조건문이 필요하다.
이 규칙은 테이블이 연결된 primary key를 가진다면 적용될 수 없다.
- Cartesian Product
조인 조건문이 잘못되었거나 완전히 생략되었을 때 모든 행들의 조합인 Cartesian product가 발생한다.
첫 번재 테이블의 모든 행은 두 번째 테이블의 모든 행에 조인된다.
CROSS JOIN을 이용하면 Cartesian Product 값을 얻을 수 있다.
ex.) 4행짜리 테이블과 14행짜리 테이블은 4 x 14 의 56행이 발생된다.
SELECT
e.empno, e.ename, d.dname
FROM
dept d
CROSS
JOIN
emp e;
● JOIN의 유형
1. Equi join (단순 조인, 내부 조인, 등가조인)
- 가장 일반적으로 사용하는 Equality Condition(=)에 의한 조인이다
2. Non-Equi Join
- 테이블의 어떤 column도 Join할 테이블의 column에 일치하지 않을 때 사용한다.
- '='(동등)이 아닌 다른 연산자를 이용한다.
- 거의 사용하지 않는다.
Ex.) EMP 테이블의 SAL이 SALGRADE테이블의 LOSAL과 HISAL 사이에 있을 때 검색.
SELECT e.ename, e.sal, s.grade
FROM emp e, salgrade s
WHERE e.sal
BETWEEN s.losal AND s.hisal;
3. Self Join
- Equi Join과 같으나 하나의 테이블에서 조인이 일어나는 것이 다르다.
- 같은 테이블에 대해 두 개의 alias를 사용하여 FROM절에 두 개의 테이블을 사용하는 것 처럼 조인한다.
SELECT
e.ename, a.ename
"Manager"
FROM
emp e, emp a
WHERE
e.empno = a.mgr;
4. Outer Join
- 조인 조건을 만족하지 않는 행들도 볼 수 있다.
- 연산자는 (+)기호이며, 정보가 부족한 조인쪽에 위치한다. 이 연산자는 한 개 이상의 null행을 생성한다.
'Programming > Oracle 공부' 카테고리의 다른 글
[Oracle/기본]6. 서브쿼리(Subquery) (0) | 2017.05.23 |
---|---|
[Oracle/기본]5. 그룹 함수를 사용한 데이터 집계 (2) | 2017.05.22 |
[Oracle/기본]3. 단일 행 함수 (0) | 2017.05.19 |
[Oracle/기본]2. 데이터 제한과 정렬 (0) | 2017.05.15 |
[Oracle/기본]1. 기본적인 SQL문장 작성. (0) | 2017.05.15 |