. 순수 관계 연산자
– SELECT
– JOIN
– DIVIDE
. 집합 연산자의 종류
집합 연산자 | 연산자의 의미 |
UNION | 여러 개의 SQL문의 결과에 대한 합집합으로 결과에서 모든 중복된 행은 하나의 행으로 만든다. |
UNION ALL | 여러 개의 SQL문의 결과에 대한 합집합으로 중복된 행도 그대로 결과로 표시된다. 즉, 단순히 결과만 합쳐놓은 것이다. 일반적으로 여러 질의 결과가 상호 배타적인(Exclusive)일 때 많이 사용한다. 개별 SQL문의 결과가 서로 중복되지 않는 경우, UNION과 결과가 동일하다.(결과의 정렬 순서에는 차이가 있을 수 있음) |
INTERSECT | 여러 개의 SQL문의 결과에 대한 교집합이다. 중복된 행은 하나의 행으로 만든다. |
EXCEPT | 앞의 SQL문의 결과에서 뒤의 SQL문의 결과에 대한 차집합이다. 중복된 행은 하나의 행으로 만든다.(일부 데이터베이스는 MINUS를 사용함) |
. 반환되는 데이터 형태에 따른 서브쿼리 분류
서브쿼리 종류 | 설명 |
Single Row 서브쿼리 (단일 행 서브쿼리) |
서브쿼리의 실행 결과가 항상 1건 이하인 서브쿼리를 의미한다. 단일 행 서브쿼리는 단일 행 비교 연산자와 함꼐 사용된다. 단일 행 비교 연산자에는 =, <, <=, >, >=, <> 이 있다. |
Multi Row 서브쿼리 (다중 행 서브쿼리) |
서브쿼리의 실행 결과가 여러 건인 서브쿼리를 의미한다. 다중 행 서브쿼리는 다중 행 비교 연산자와 함께 사용된다. 다중 행 비교 연산자에는 IN, ALL, ANY, SOME, EXISTS가 있다. |
Multi Column 서브쿼리 (다중 칼럼 서브쿼리) |
서브쿼리의 실행 결과로 여러 칼럼을 반환하다. 메인쿼리의 조건절에 여러 칼럼을 동시에 비교할 수 있다. 서브쿼리와 메인쿼리에서 비교 하고자 하는 칼럼 개수와 칼럼의 위치가 동일해야 한다. |
. 뷰(View) 설명
– 뷰는 단지 정의만을 가지고 있으며, 실행 시점에 질의를 재작성하여 수행한다.
– 뷰는 보안을 강화하기 위한 목적으로도 활용할 수 있다.
– 실제 데이터를 저장하고 있는 뷰를 생성하는 기능을 지원하는 DBMS도 있다.
. 그룹함수
– 일반 그룹 함수를 사용하여 CUBE, GROUPING SETS와 같은 그룹함수와 동일한 결과를 추출할 수 있으나, ROLLUP 그룹 함수와 동일한 결과는 추출할 수 없다.
– GROUPING SETS 함수의 경우에는 함수의 인자로 주어진 컬럼의 순서에 따라 결과가 달라지므로 컬럼의 순서가 중요하다.
– CUBE, ROLLUP, GROUPING SETS 함수들의 대상 컬럼 중 집계된 컬럼 이외의 대상 컬럼 값은 해당 컬러의 데이터 중 가장 작은 값을 반환한다.
. 윈도우 함수(Wondow Function, Analytic Function) 설명
– Patition과 Group By 구문은 의미적으로 유사하다.
– 윈도우 함수 처리로 인해 결과 건수가 줄어든다.
– 윈도우 함수 적용 범위는 Partition을 넘을 수 없다.
. PL / SQL 설명
– 변수와 상수 등을 사용하여 일반 SQL 문장을 실행할 때 WHERE절의 조건 등으로 대입할 수 있다.
– Procedure, User Defined Function, Trigger 객체를 PL / SQL로 작성 할 수 있다.
– Procedure 내부에 작성된 절차적 코드는 PL / SQL 엔진이 처리하고 일반적인 SQL 문장은 SQL실행기가 처리한다.
. 절차형 SQL 모듈 설명
– 저장형 프로시저는 SQL을 로직과 함께 데이터베이스 내에 저장해 놓은 명령문의 집합을 의미한다.
– 저장형 함수(사용자 정의 함수)는 단독적으로 실행되기 보다는 다른 SQL문을 통하여 호출되고 그 결과를 리턴하는 SQL의 보조적인 역할을 한다.
– 트리거는 특정한 테이블에 INSERT, UPDATE, DELETE와 같은 DML문이 수행되었을 때 데이터베이스에서 자동으로 동작하도록 작성된 프로그램이다.
. Trigger 설명
– 데이터베이스에 의해서 자동으로 호출되고 수행된다.
– 특정 테이블에 대해서 INSERT, UPDATE, DELETE 문이 수행되었을 때 호출되도록 정의할 수 있다.
– 데이터베이스에 로그인하는 작업에도 정의할 수 있다.
. 프로시저와 트리거의 차이점
프로시저 | 트리거 |
CREATE Procedure 문법사용 | CREATE Trigger 문법사용 |
EXECUTE 명령어로 실행 | 생성 후 자동으로 실행 |
COMMIT, ROLLBACK 실행 가능 | COMMIT, ROLLBACK 실행 안됨 |