[DataBase] 조인 , 별칭 설정
조인
집합 연산자와 조인의 차이점
조인은 두 개 이상의 테이블을 연결하여 하나의 테이블처럼 출력할 때 사용하는 방식입니다 .
집합연산자를 사용한 결과 : 두 개 이상 SELECT문의 결과 값을 세로로 연결한 것입니다 .
조인을 사용한 결과 : 두개 이상의 테이블 데이터를 가로로 연결한 것입니다 .
여러 테이블을 이용할 때 FROM 절
지금 까지 사용한 SELECT문은 다음과 같이 FROM절에 EMP 테이블 하나만을 명시했습니다 .
그러나 FROM 절에는 여러 개의 테이블을 지정하는 것이 가능합니다 .
SELECT
FROM [table1 ,table2 ,talbe3 ... tableN]
조금 더 정확하게는 꼭 테이블이 아니더라도 테이블의 형태, 즉 열과 행으로 구성된 데이터 집합이면 모두 FROM 절에 지정 가능합니다 .
View, Subquery등이 이에 해당합니다 .
FROM 테이블에 여러 테이블 선언
SELECT *
FROM EMP, DEPT
ORDER BY EMPNO ;
이렇게 EMP테이블과 DEPT 테이블을 FROM 절에 함께 명시하여 출력하면 생각보다 많은 양의 데이터가 출력 됩니다 .
이는 FROM 절에 명시한 각 테이블을 구성하는 행이 모든 경우의 수로 조합되어 출력되게 때문입니다 .
문제점
이 출력 결과에는 문제가 있습니다 .
가장 먼저 출력된 EMP 테이블의 SMITH를 살펴보면 ,
그리고 SMITH가 근무하는 부서의 데이터는 DEPT 테이블의 DETNO 열 값이 20인 행이 됩니다 .
즉, DALLAS에 있는 RESEARCH 부서가 SMITH 사원이 근무하는 부서 인 것입니다 .
조인을 통한 출력은 결과로 나올 수 있는 모든 행을 조합하기 때문에 사원 데이터와 부서 데이터가 정확이 맞아 떨어지지 않는 데이터도 같이 출력 됩니다 .
명시한 테이블을 가로로 연결하기 위해 조인을 사용하지만, 어떤 데이터를 가로로 정확히 연결 해야 하는 지의 기준은 데이터 베이스가 아닌 사용자가 직접 정해야 합니다 .
이 때 출력 행을 선정하는 조건식을 명시하는 WHERE 절이 중요한 역할을 합니다 .
DEPTNO 열 기준으로 정확하게 출력
- 열 이름을 비교하는 조건식을 이용한 출력
SELECT *
FROM EMP,DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
ORDER BY EMPNO ;
전에 결과와는 다르게 열값이 같은 14개의 행만 출력됩니다 .
각 행별 부서 정보도 정확하게 연결 되어 있습니다 .
이는 FROM 절에 명시된 테이블의 모든 데이터를 조합한 결과에서 WHERE절을 사용해 출력하는 기준, 즉 두 테이블의 DEPTNO 열이 일치한 데이터만 출력하도록 WHERE절의 조건식을 지정해 주었기 때문입니다 .
테이블의 별칭 설정
FROM절에 지정한 테이블에는 SELECT 절의 열에 사용한 것 처럼 별칭을 지정할 수 있습니다.
테이블의 별칭을 지정할 때는 테이블 이름에서 한 칸 띄운 후 지정합니다 .
FROM 테이블 1 별칭 1, 테이블 2 별칭 2 ....
테이블 이름을 별칭으로 표현
SELECT *
FROM EMP E,DEPT D
WHERE E.DEPTNO = D.DEPTNO
ORDER BY EMPNO ;