분산된 테이블로부터 필요한 정보를 가져오는 조인을 수행할 때는 반드시 '조인 조건'이 있어야 한다. 조인조건이 없는 조인 문장은 교차 조인이 되어 모든 행이 1:1로 대응(카티션 프로덕트: Cartisian Product)되는 행렬이 검색된다. 이는 잘못된 결과값이다.
// 조인 조건이 없는 교차 조인을 수행한 예시
SELECT loc 근무지, eno 사번, ename 사원명, d.dno 부서번호, dname 부서명
FROM emp e, dept d
FROM절을 쓸때는 테이블 명 뒤에 별명(약자)을 붙혀서 보다 간결한 쿼리를 짤 수 있는데, FROM emp e, dept d; 라고 하면 '지금부터 emp를 e라고 부를거야~'라고 한다는 의미이다. 따라서 SELECT, WHERE절에서도 별명으로 해당 테이블을 호출할 수 있다. 그런데 여기서, 원래의 테이블 명으로 호출할 경우 'invalid identifier error'가 발생한다. SQL문을 실행할 때, 메모리 상에서는 FROM절이 가장 먼저 실행되기 때문에 그 이후에 실행되는 절에서도 FROM절과 동일한 이름으로 호출해야 하기 때문이다.
// 잘못된 별명 사용 예시
SELECT loc 근무지, eno 사번, ename 사원명, dept.dno 부서번호, emp.dno 부서번호, dname 부서명
FROM emp e, dept d
WHERE loc='광주' AND d.dno = e.dno;
'Programming > SQL' 카테고리의 다른 글
[Oracle] 07. Using, On, 등가 조인과 비등가 조인 (0) | 2019.04.22 |
---|---|
[Oracle] 06. 자기참조조인(Self Join), 외부조인(Outer Join), 자연조인(Natural Join) (0) | 2019.04.22 |
[Oracle] 04. 다양한 연산자(AND, OR, NOT, LIKE, BETWEEN, IN) (0) | 2019.04.18 |
[Oracle] 03. 자주 쓰는 자료형(DataType) (0) | 2019.04.18 |
[Oracle] 02. 연결 연산자, 중복제거(DISTINCT), 정렬(ORDER BY) (0) | 2019.04.18 |