일반 집합연산자 -> 현재의 SQL
UNION -> UNION
INTERSECTION -> INTERSECT
DIFFERENCE -> EXCEPT (Oracle은 MINUS)
PRODUCT -> CROSS JOIN(CARTESIAN PRODUCT)
순수관계연산자 -> 현재의 sql
SELECT -> WHERE
PROJECT -> SELECT
JOIN -> 다양한 JOIN
DIVIDE -> 현재 사용하지 않음
FROM 절 JOIN 형태
ANSI/ISO SQL에서 표시하는 FROM 절의 JOIN 형태는 다음과 같다
-INNER JOIN -NATURAL JOIN-USING 조건절-
ON 조건절- CROSS JOIN - OUTER JOIN
INNER JOIN
-내부 조인 이라고 함
JOIN 조건에서 동일한 값이 있는 행만 반환한다
DEFAULT 옵션이므로 생략이 가능하지만, CROSS JOIN , OUTER JOIN과는 같이 사용할 수 없다
USING 조건절이나 ON조건절을 필수적으로 하용해아한다
SQL>>
"사원 번호와 사원이름,소속부서 코드와 수속부서 이름을 출력하시오."
SELECT EMP.DEPTNO,EMPNO,ENAME,DNAME FORM EMP.DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
SELECT EMP.DEPTNO,EMPNO,ENAME,DNAME FORM EMP INNER JOIN DEPT ON EMP.DEPTNO =DEPT.DEPTNO;
SELECT EMP.DEPTNO,EMPNO,ENAME,DNAME FORM EMP JOIN ON EMP.DEPTNO=DEPT.DEPTNO;
NATURAL JOIN
두테이블간의 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI(=)JOIN을 수행한다
추가로 USING조건절, ON조건절, WHERE절에서 JOIN조건을 정의할 수 없다
JOIN에 사용된 칼럼들은 같은 데이터 유형이어야한다
ALIAS나 테이블명과 같은 접두사를 붙일 수 없다
SQL>>
"사원 번호와 사원이름, 소속부서 코드와 수속부서 이름을 출력하시오"
SELECT DEPTNO,EMPNO,ENAME,DNAME FORM EMP NATURAL JOIN DEPT;
USING 조건절
-같은 이름을 가진 칼럼들 중에서 원하는 칼럼에 대해서만 선택적으로 =JOIN을 할수 있다
SQL SERVER 에서는 지원하지 않는다
JOIN 칼럼에 대해서는 ALIAS나 테이블이름과 같은 접두사를 붙일 수 없다
SELECT * FROM DEPT JOIN DEPT_TEMP USING (DEPTNO);