정보처리산업기사 실기/데이터베이스

내장 SQL과 커서(Cursor)

미웡할꺼야 2020. 11. 7. 16:29

내장 SQL(Embedded-SQL)

- 삽입 SQL이라고도 하며, 일반 응용 프로그램에 SQL을 삽입하여 데이터베이스 자료를 이용하고 다양한 조작을 할 수 있도록 한 것이다.

- 즉, 응용 프로그램이 실행될 때 같이 실행되도록 호스트 프로그램 언어에 삽입된 SQL을 말한다.

호스트 프로그램 언어 : 응용 프로그램을 작성할 때 사용되는 C, C++, Visual Basic 등의 언어를 의미한다.

 

1) 내장 SQL의 특징

- EXEC SQL문으로 시작하여 세미콜론(;)으로 종료한다.

- 호스트 프로그램 실행 시 같이 실행된다.

- 일반 SQL문은 실행 후 결과값으로 여러 자료(튜플)을 얻을 수 있지만 내장 SQL은 하나의 자료(튜플)만 얻을 수 있다.

- 호스트 언어에 데이터베이스의 자료를 불러와 기억하기 위한 공간(변수)이 필요하다. 불러온 자료를 기억하기 위한 변수를 호스트 변수라고 한다.

- 호스트 변수를 사용하기 위해서는 BEGIN DECLARE SECTION ~ END DECLARE SECTION을 통해 선언되어 있어야 한다.

- 호스트 변수명과 데이터베이스의 속성명은 같아도 무방하다.

- 호스트 변수는 구분을 위해 콜론(:)을 변수명 앞에 붙인다.

- 데이터베이스 속성의 데이터 타입과 호스트 변수의 데이터 타입은 서로 같아야 한다.

 

2) 내장 SQL 기본 구문

- 호스트 변수 선언 구문
EXEC SQL BEGIN DECLARE SECTION;
[데이터_타입 호스트_변수명;]
EXEC SQL END DECLARE SECTION;

 

- 내장 SQL을 이용한 단일 튜플 검색
EXEC SQL SELECT {속성_이름} INTO {:호스트_변수명} FROM 테이블_이름 WHERE 조건;

 

- 내장 SQL을 이용한 삽입
EXEC SQL INSERT INTO 테이블_이름(속성명) VALUES(:호스트_변수명);

 

- 내장 SQL을 이용한 갱신
EXEC SQL UPDATE 테이블_이름 SET 변경내용 WHERE 조건;

 

- 내장 SQL을 이용한 삭제
EXEC SQL DELETE FROM 테이블_이름 WHERE 조건;


커서(Cursor)

- 내장 SQL에 의해 얻은 값은 하나의 자료(튜플) 단위로 처리된다. 따라서 여러 개의 자료(튜플)를 그룹으로 처리하기 위해 커서를 이용한다.

- 커서는 실행 후 튜플들의 집합을 처리하는 데 사용되는 위치(포인터) 역할을 하며 한 번에 하나씩 순서대로 수행된다.

 

커서(Cursor) 관련 명령어

DECLARE - 사용할 커서를 선언하기 위한 명령어
OPEN - 커서를 첫 번째 튜플로 이동하기 위한 명령어
FETCH - 순서대로 처리하기 위해 커서를 다음 튜플로 이동하는 명령어
CLOSE - 처리가 완료된 후 커서를 종료하는 명령어

커서 명령의 진행 순서 : DECLARE - OPEN - FETCH - CLOSE


스토어드 프로시저(Stored Procedure)

- 자주 수행해야 할 SQL 처리 과정을 미리 하나의 작은 프로그램으로 작성하여 데이터베이스에 저장해 두었다가 필요한 경우 호출하여 사용하기 위해 만들어 놓은 프로그램이다.

- 반복되는 작업을 매번 작성하지 않아도 되므로 작업이 효율적이며 수행시간을 단축시킬 수 있다.

 

- 프로시저 생성

CREATE PROCEDURE 프로시저_이름

BEGIN

    SQL 처리 내용

END;

 

- 프로시저 삭제

DROP PROCEDURE 프로시저_이름;

'정보처리산업기사 실기 > 데이터베이스' 카테고리의 다른 글

회복 기법과 병행 제어  (0) 2020.11.07
트랜잭션(Transaction)  (0) 2020.11.07
역정규화  (0) 2020.11.07
정규화(Normalization)  (0) 2020.11.06
이상(Anomaly)과 함수적 종속  (0) 2020.11.06