일반 집합 연산자 | SQL 문 | 설명 |
---|---|---|
UNION | UNION | UNION 연산은 수학적 합집합을 제공하기 위해, 공통 교집합의 중복을 없애기 위한 사전 작업으로 시스템에 부하를 주는 정렬 작업이 발생한다 |
INTERSECTION | INTERSECT | INTERSECTION 은 수학의 교집합으로써 두 집합의 공통 집합을 추출한다 |
DIFFERENCE | EXCEPT(ORACLE MINUS) | DIFFERENCE 는 수학의 차집합으로써 첫 번째 집합에서 두 번째 집합과의 공통 집합을 제외한 부분이다 |
PRODUCT | CROSS JOIN | PRODUCT 의 경우는 CROSS(ANIS/ISO 표준) PRODUCT 라고 불리는 곱집합으로 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 말한다 |
일반 집합 연산자 | SQL 문 | 설명 |
---|---|---|
SELECT 연산 | WHERE 절로 구현 | SELECT 연산은 SQL 문장에서는 WHERE 절 기능으로 구현이 되었다. |
PROJECT 연산 | SELECT 절로 구현 | PROJECT 연산은 SQL 문장에서는 SELECT 절의 칼럼 선택 기능으로 구현되었다 |
(NATURAL) JOIN | 다양한 JOIN 기능으로 구현 | JOIN 연산은 WHERE 절의 INNER JOIN 조건과 함께 FROM 절의 NATURAL JOIN, INNER JOIN, OUTER JOIN, USING 조건절, ON 조건절 등으로 가장 다양하게 발전하였다. |
DIVIDE | 사용되지 않음 |
일반 집합 연산자 | 설명 |
---|---|
INNER JOIN | INNER JOIN 은 OUTER(외부) JOIN 과 대비하여 내부 JOIN 이라고 하며 JOIN 조건에서 동일한 값이 있는 행만 반환 |
NATURAL JOIN | NATURAL JOIN 은 두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI(=) JOIN 을 수행 |
USING 조건절 | NATURAL JOIN 에서는 모든 일치되는 칼럼들에 대해 JOIN이 이루어지지만, FROM 절의USING 조건절을 이용하면 같은 이름을 가진 칼럼들 중에서 원하는 칼럼에 대해서만 선택적으로 EQUI JOIN 을 할 수가 있음 |
ON 조건절 | JOIN 서술부(ON 조건절)와 비 JOIN 서술부(WHERE 조건 절)를 분리하여 이해가 쉬우며, 칼럼 명이 다르더라도 JOIN 조건을 사용할 수 있는 장점이 있음 |
CROSS JOIN | CROSS JOIN 은 E.F.CODD 박사가 언급한 일반 집합 연산자의 PRODUCT 의 개념으로 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 말함 |
OUTER JOIN | INNER(내부) JOIN 과 대비하여 OUTER(외부) JOIN 이라고 불리며 JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용할 수 있음 |
종류 | 설명 |
---|---|
UNION | 여러 개의 SQL 문의 결과에 대한 합집합 중복된 행은 한개의 행으로 출력됨 |
UNION ALL | 여러 개의 SQL 문의 결과에 대한 합집합 중복된 행도 그대로 결과로 표시한다 |
INTERSECT | 여러 개의 SQL 문의 대한 교집합 중복된 행은 하나로 표시한다 |
EXCEPT | 위의 SQL 문의 집합에서 아래의 SQL 문의 집합을 뺀 결과를 표시한다 |
구분 | 설명 |
---|---|
select | 조회하고자하는 컬럼을 지정한다 |
from table | 대상 테이블을 지정한다 |
where | 모든 전개를 수행한 후에 지정된 조건을 만족하는 데이터만 추출한다(필터링) |
start with 조건 | 계층 구조 전개의 시작 위치를 지정하는 구문이다 즉, 룰트 데이터를 지정한다 |
connect by [nocycle] [prior] a and b | connect by 절은 다음에 전개될 자식 데이터를 지정하는 구문이다 prior 자식 = 부모 형태를 사용하면 계층 구조에서 자식 데이터에서 부모 데이터(자식 -> 부모) 방향으로 전개하는 순방향 전개를 한다 prior 부모 = 자식 형태를 사용하면 반대로 부모 데이터에서 자식 데이터(부모 -> 작식) 방향으로 전개하는 역방향 전개를 한다 nocycle을 추가하면 사이클이 발생한 이후의 데이터는 전개하지 않는다 |
order siblings by 컬럼 | 형제노드(동일 level) 사이에서 정렬을 수행한다 |
장점 | 설명 |
---|---|
독립성 | 테이블 구조가 변경되어도 뷰를 사용하는 응용프로그램은 변경하지 않아도 된다 |
편리성 | 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있다. 또한 해당 형태의 SQL 문을 자주 사용할 때 뷰를 이용하면 편리하게 사용할 수 있다 |
보안성 | 직원의 급여 정보와 같이 숨기고 싶은 정보가 존재한다면, 뷰를 생성 할 때 해당 칼럼을 빼고 생성함으로써 사용자에게 정보를 감출 수 있다 |
구조명 | 필수/선택 | 설명 |
---|---|---|
declare(선언부) | 필수 | begin - end 에서 사용할 변수나 인수에 대한 정의 및 데이터 타입 선언 |
begin(실행부) | 필수 | 개발자가 처리하고자 하는 sql문과 필요한 logic(비교문,제어문 등)이 정의도는 실행 부 |
exception(예외처리부) | 선택 | begin - end 에서 실행되는 sql 문에 발생된 에러를 처리하는 에러 처리 부 |
end | 필수 |
프로시저 | 트리거 |
---|---|
create procedure 문법사용 | create trigger 문법사용 |
exectute/exec 명형어로 실행 | 생성 후 자동으로 실행 |
내부에서 commit,rollback 실행가능 | 내부에서 commit,rollback 실행불가 |