4. SQL 활용

 

. 순수 관계 연산자

– 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 실행 안됨

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다