320x100
320x100

절차형 SQL

- 절차지향적인 프로그램 개발을 위한 트랜잭션 언어

- 종류

ㆍ프로시저

  : 일련의 쿼리들을 하나의 함수처럼 실행하기 위한 쿼리의 집합

 

ㆍ사용자 정의 함수

  : 일련의 SQL 처리를 수행하고 단일 값으로 반환

 

ㆍ트리거

  : CRUD 이벤트 발생시 관련 작업을 자동으로 수행

 

 

 

출력부 (DBMS_OUTPUT)

- 메시지를 버퍼에 저장하고 버퍼로 부터 메시지를 읽어오기 위한 인터페이스 패키지

 : 절차형 SQL이 정상적으로 구현 되었는지 테스트

- 종류

ㆍDBMS_OUTPUT.PUT(문자열);

  : 개행 없이 문자열 출력 

ㆍDBMS_OUTPUT.PUT_LINE(문자열);

  : 문자열 출력 후 개행

 

 

 

제어부 (CONTROL)

- if문

if 조건 then 
	문장;
elsif 조건 then
	문장;
else
	문장;
end if;

- 간단한 case문

case 변수
	when 값1 then
		set 명령어;
	when 값2 then
		set 명령어;
	else
		set 명령어;
end case;

- 검색된 case문 

case 변수
	when 조건1 then
		set 명령어;
	when 조건2 then
		set 명령어;
	else
		set 명령어;
end case;

- loop문

loop	
	문장;
    exit when 탈출조건;
end loop;

- while문

while 반복조건 loop
	문장;
exit when 탈출조건;
end loop;

- for loop문

for 인덱스 in 시작값 .. 종료값
loop
	문장;
end loop;

 

 

 

예외부 (exception)

exception
	when 조건 then
    	set 명령어;

 

 

 

프로시저 (Procdure)

- 선언부 (declare)

 : 프로시저의 명칭, 변수와 인수, 데이터 타입 정의

 

- 시작 / 종료부 (begin / end)

 : 다수 실행을 제어하는 기본적 단위가 되며 논리적 프로세스 구성

 

- 제어부 (control)

 : 조건문과 반복문을 이용한 문장처리

 

- SQL

 : DML을 주로 사용 / DDL중 TRUNCATE 사용

 

- 예외부 (exception)

 : begin~end 내의 SQL문 실행시 발생하는 예외에 대한 처리

 

- 실행부 (transaction)

 : 프로시저에서 수행된 dml 수행 내역의 DBMS 적용 또는 취소 여부 결정

 

 

 

프로시저 문법

create [or replace] procedure 프로시저명
(파라미터명 [in | out | inout] 데이터타입,..)
is
	변수선언
begin
	명령어;
[commit | rollback]
end;

- or replace : 기존 프로시저 존재시 덮어쓰기

- in : 운영체제에서 프로시저로 값 전달

- out : 프로시저의 처리결과를 운영체제로 전달

- inout : in과 out을 동시에 수행

 

 

 

사용자 정의 함수

- 프로시저 구조 + 반환부

- 반환부 : 호출문에 대한 함숫 값 반환

=> 프로시저에 return이 있는 형태

=> 모드에는 in만 존재 (파라미터명 in 데이터타입,...)

 

 

 

트리거

- 프로시저 구조 + 이벤트 / 순서 / 유형 / for each now

- 종류

ㆍ행 트리거 : 데이터 변화가 생길 때마다 실행

문장 트리거 : 트리거에 의해 단 한 번 실행

- 주의사항

 : 트랜잭션 제어어(TCL) 사용불가

 

 

 

트리거 구조

create [or replace] trigger 트리거명
[before | after] 유형 on 테이블명
[for each now]
begin
end;

- before

 : 테이블에 대한 insert, update, delete 수행전 트리거 실행

 

- after

 : 테이블에 대한 insert, update, delete가 성공했을때 트리거 실행

 

- 유형

 : DML 명령어 중 선택  <여러개 선택 가능>

 : ex) insert or delete on employee

 

- for each now

 : 매번 변경되는 데이터 행의 수만큼 실행

 

 

 

 프로시저 성능개선

- 규칙 기반 옵티마이저 (RBO)

ㆍ개념

  : 사전 등록된 규칙에 따라 질의 실행 계획 선택

ㆍ평가기준

  : 인덱스 구조, 연산자, 조건절 형태 등

ㆍ장점

  : 사용자가 원하는 처리경로로 유도하기 쉬움 

 

- 비용 기반 옵티마이저 (CBO)

ㆍ개념

  : 통계정보로 부터 모든 접근 경로를 고려한 질의 실행 계획 선택

ㆍ평가기준

  : 레코드 및 블록 개수, 평균 행 길이, 컬럼 값 수 등

ㆍ장점

  : 옵티마이저에 대한 이해도가 낮아도 성능 보장

 

 

 

옵티마이저의 역할

- 쿼리변환

 : SQL을 표준화된 형태로 변환

- 비용산정

 : 쿼리 명령어 각 단계의 선택도, 카디널리티, 비용 계산

- 계획생성

 : 하나의 쿼리 수행시 후보군이 될만한 실행 계획 생성

 

 

힌트

- SQL 성능개선의 핵심부분으로,옵티마이저의 실행 계획을 원하는대로 변경

- 종류

/*+RULE*/
/*+CHOOSE*/
/*+INDEX(테이블명 인덱스명)*/
/*+USE_HASH(테이블명 인덱스명)*/
/*+USE_MERGE(테이블명)*/
/*+USE_NL(테이블명)*/

 

300x250
728x90

'Certification > 정보처리기사' 카테고리의 다른 글

공통 모듈 구현  (0) 2021.04.11
개발 환경 구축  (0) 2021.04.11
응용 SQL 작성  (0) 2021.04.11
데이터베이스 기본 (SQL)  (0) 2021.04.11
트랜잭션  (0) 2021.04.11