어떻게 질의를 수행할 것인가를 명시하는 절차적인 언어(How)
Union (UNION)
합집합 연산
UNION ALL은 교집합 2번 보여줌.
A,B 컬럼이 교집합이 없을시 UNION ALL이 성능 ↑
Intersection (INTERSECT)
Differecne (EXCEPT-SQL Server, MINUS-Oracle)
Catesian Product (CROSS JOIN)
Select (WHERE)
Project (SELECT)
Join (INNER JOIN, OUTER JOIN, NATURAL JOIN 등)
Divide (현재 사용안함)
유형 | 설명 |
---|---|
INNER JOIN(내부조인) | 공통 존재 컬럼의 값이 같은 경우를 추출(WHERE 절 활용) |
NATURAL JOIN | INNER JOIN의 하위 개념으로 두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 EQUI JOIN 수행 |
OUTER JOIN(외부 조인) | 왼쪽, 오른쪽, 완전 외부 조인이 있음 |
CROSS JOIN(교차 조인) | 조인 조건이 없는 모든 데이터 조합을 추출하는 기법 |
SELF JOIN(셀프 조인) | 자기 자신에게 별칭을 지정한 후 다시 조인하는 기법 |
ON 절
을 통해 기술JOIN 조건에서 동일한 값이 있는 행만 반환한다.
SELECT A.컬럼1, B.컬럼1
FROM 테이블1 A [INNER] JOIN 테이블2 B
ON 조인조건
[WHERE 검색 조건];
-> 중복된 컬럼도 하나로 치지 않고 표현
두 테이블 간의 동일한 이름을 갖는 모든 컬럼에 대해 EQUI(=) JOIN 수행
NATURAL JOIN을 수행할 때는 조인 조건을 정의할 수 없다.
SELECT 컬럼1, 컬럼2,...
FROM 테이블1 NATURAL JOIN 테이블2;
-> 조인 조건을 명시하지 않고 공통된 컬럼으로 JOIN 처리
-> JOIN에 사용된 컬럼은 같은 데이터 유형이어야 함
-> 자연조인에서 사용된 열은 식별자를 가질 수 없음
-> 별도의 컬럼 순서를 지정하지 않으면 자연 조인의 기준이 되는 컬럼들이 다른 컬럼보다 먼저 출력
-> 조인에 사용된 같은 이름의 컬럼은 하나로 처리
FROM 절에서 USING 조건절을 이용하여 같은 이름을 가진 컬럼 중에 원하는 컬럼에 대해서만 EQUI JOIN을 할 수 있다.
SELECT DEPTNO, DEPT.DNAME, DEPT.LOC, DEPT_TEMP.DNAME, DEPT_TEMP.LOC
FROM DEPT JOIN DEPT_TEMP
USING (DEPTNO);
ON 조건절을 사용하면 컬럼명이 다르더라도 JOIN 조건을 사용할 수 있다.
SELECT 컬럼1, 컬럼2,...
FROM 테이블1 CROSS JOIN 테이블2;
조인 조건에 동일한 값이 없는 행도 반환할 때 사용
SELECT A.컬럼1, A.컬럼2, B.컬럼1, B.컬럼2, ...
FROM 테이블1 A LEFT [OUTER] JOIN 테이블2 B
ON 조인조건
[WHERE 검색조건];