본문 바로가기

2021 정보처리기사/2과목: 소프트웨어 개발

[2021 정보처리기사 필기] 절차형 SQL의 개요와 특징

728x90
반응형

목차

 

 

 

 

[정보처리기사 2과목 필기 예상 키워드] 목록으로 돌아가기
과목: 2. 소프트웨어 개발
챕터: 1장 데이터 입출력 구현
키워드: 절차형 SQL
(프로시저, 사용자 정의함수, 트리거)
#SQL
#절차형SQL
#프로시저
#사용자 정의함수
#트리거
#트랜잭션

 

 

 

SQL의 개요

SQL이란 관계형 데이터베이스(RDB)를 지원하는 언어로 원하는 정보가 무엇인지, 그것을 어떻게 유도하는지 기술하는 언어(관계대수)와 원하는 정보가 무엇인지만 정의하는 비 절차적 언어(관계해석)을 기초로 두 가지를 혼합한 데이터 언어이다.

SQL을 통해 데이터베이스 정보를 요청하는 것을 질의, 또는 쿼리(Query)라고 한다. SQL은 질의 기능만 있는 것이 아니라 데이터 구조를 정의하고 조작하고 제어할 수 있는 기능을 모두 갖추고 있다. 

 

 

 

SQL의 용도에 따른 정의

SQL은 사용 용도에 따라
정의어(DDL:Data Definition Language),
조작어(DML:Data Management Language),
제어어(DCL:Data Control Language)로 구분할 수 있다.

정의어(DDL):
테이블, 제약사항, 도메인 등을 Create(정의), Alter(변경), Drop(삭제) 수행하는 언어

조작어(DML):
DB를 실질적으로 처리하는 언어, DB 사용자와 DBMS간의 인터페이스를 제공
Select(튜플검색), Insert(튜플삽입), Delete(튜플삭제), Update(튜플변경) 등

제어어(DCL):
DB를 관리할 목적으로 사용하는 언어
데이터의 보안, 무결성, 회복, 병행수행을 제어. *Commit, *Rollback, *Revoke, *Grant 등의 *TCL 명령어 수행

*TCL 명령어
여러 종류의 데이터를 출력하는 과정인 트랜잭션(Transaction)을 제어하기 위해 사용하는 언어로
Commit, Rollback, Revoke, Savepoint, Grant 등이 있다.

> Commit 
(명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고 정상적으로 작업이 완료되었음을 관리자에게 알려줌)

> Rollback
(DB 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구함)

> Savepoint
(트랜잭션 내에 Rollback할 위치(저장점)를 지정하는 명령어)

> Revoke
(DB 사용자에게 권한 취소)

>  Grant
(DB 사용자에게 권한 부여)



 

절차형 SQL의 개요

단순 트랜잭션에서 좀 더 발전하여 반복, 분기 등의
제어가 가능한 모듈화된(재사용가능한) SQL을 말한다.
DBMS에서 직접 실행되며, 종류는 프로시저, 트리거, 사용자정의함수 등이 있다.

-일반 프로그래밍 언어에 비해 효율은 떨어지지만 단일 SQL 문장으로 처리하기 어려운 연속작업을 처리하기 적합하다
-DBMS 엔진에서 직접 실행되기 때문에 입.출력 패킷이 적지만 속도는 느린 편이다
-Declare-Begin-End 형식으로 작성되는 블록(Block) 구조로 되어 있기 때문에 기능별 모듈화가 가능하다

 

 

프로시저, 사용자 정의 함수, 트리거

절차형 SQL은 종류별로 문법이 조금씩 다르지만, 공통적인 요소는 있다.
이름과 변수를 정의하는 부분(Declare), 프로그램의 시작부분(Begin), 끝부분(End)는 항상 포함된다.

 

프로시저

프로시저는 주로 DML(조작어)을 사용해서 주기적으로 실행하는 작업을 진행한다(매출의 마감/일괄작업 등)
트랜잭션 영역이 마지막에 사용되어 처리 결과를 반환하지 않거나 한 개 이상의 값을 반환하며 작업 결과를 데이터베이스에 저장한다. 리턴 값이 하나가 아닌 여러개로 나와도 되지만, 함수는 오직 하나의 값만 있어야 한다.

 

사용자정의함수

프로시저와 구조가 거의 동일하지만, 트랜잭션 영역이 리턴 영역으로 바뀐다. 작업의 결과물을 호출한 쿼리문에 돌려준다(종료 시 단일 값을 반환)는 점이 가장 큰 차이점이다. 리턴값이 꼭 있어야 한다.함수의 호출은 대부분 DML 문장 내부에서 이루어지며 Select, Update 등에서 사용된다.

 

프로시저 사용자 정의 함수
업무를 맡기는 목적 로직을 도와주는 목적
트랜잭션을 사용할 수 있음 트랜잭션을 사용할 수 없음
파라미터 형식이 입, 출력임 입력 파라미터만 가능
SELECT, WHERE, HAVING 절에 프로시저 사용 불가 SELECT, WHERE, HAVING 절에 사용자 정의 함수 사용 가능



트리거

트리거는 삽입, 삭제, 수정 등으로 DB에 특정 변화가 발생하는 경우에 자동으로 실행하도록 만들어진 프로그램이다. 무결성을 유지하거나 로그(작업내용)를 저장하는데 사용할 수 있다. 자동으로 실행되기 때문에 리턴값이나 매개변수가 없고 특히나 Commit, Rollback이 없다. 이 때문에 오류에 특별히 주의해야 한다. 

트리거는 Declare 영역이 약간 독특한데, 실행 시점을 특정 이벤트 전이나 후로 지정할 수 있고 변화가 있는 행들에 각각 별도로 트리거가 진행될 수 있도록 지정할 수 있다(Each for Row). 또한, Old.와 New. 명령어로 신규 데이터와 기존 데이터를 구분할 수 있다.

 

 

 

 

 

 

[2021 정보처리기사 키워드 정리] 2. 소프트웨어 개발 (상시업데이트)

[2021 정보처리기사 키워드 정리] 2. 소프트웨어 개발 2021년 정보처리기사 공부를 위해 각 과목/챕터 별 Best 키워드를 정리해 놓은 글입니다. 시나공 문제집의 기출빈도와 중요도를 기준으로 정리

y-oni.tistory.com

참고: 시나공 정보처리기사 필기 (저자: 강윤석, 김용갑, 김우경, 김정준 | 출판사: 길벗), 유튜브 주간컴공TV

728x90