1 / 20

제 6 장 삽입 SQL

제 6 장 삽입 SQL. 1. 개요. 2. 삽입 SQL 처리 절차. 3. 삽입 SQL 형식. 4. 커서 이용 방식. 5. 오류 처리 기법. 6. 삽입 , 삭제 , 갱신 방식. 7. 동적 SQL. 1. 개 요. 데이터베이스 사용자가 직접 키보드를 이용하여 DBMS 를 직접 이용하는 대화식 (interactive) SQL 만으로는 일반적인 데이터베이스 응용은 불가능하다 .

azuka
Télécharger la présentation

제 6 장 삽입 SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제 6 장 삽입 SQL 1. 개요 2. 삽입 SQL 처리 절차 3. 삽입 SQL 형식 4. 커서 이용 방식 5. 오류 처리 기법 6. 삽입, 삭제, 갱신 방식 7. 동적 SQL

  2. 1. 개 요 • 데이터베이스 사용자가 직접 키보드를 이용하여 DBMS를 직접 이용하는 대화식(interactive) SQL 만으로는 일반적인 데이터베이스 응용은 불가능하다. • 데이터베이스 응용을 이용하는 최종사용자는 대부분 DBMS 를 자유자재로 이용할 수 있는 능력이 없으며 그러한 능력을 가져야 할 필요또한 없다. • 데이터베이스 응용 중 동일한 내용을 반복적으로 처리해야 하는 업무 (각종 예약업무나 등록업무)는 삽입 SQL 을 이용하여 응용 프로그램을 개발한 후 최종 사용자에게 제공한다.

  3. 2. 삽입 SQL 처리 절차 • 삽입 SQL 을 이용한 프로그램은 호스트 언어의 예비 컴파일러를 통하여 호스트 언어 형식으로 번역. • 번역 결과물은 호스트 언어 컴파일러를 통하여 오브젝트 모듈로 번역.

  4. 삽입 SQL 처리 절차 … ESQLC SQL select s_no, s_name from student where dept=‘컴퓨터공학과’; .. . 삽입 SQL 질의어 부분 Precompiler … Call SQL 문장 함수 ... 호스트 언어의 대당 함수로 번역 호스트 언어 Compiler 오브젝드 모듈

  5. 3. 삽입 SQL 형식 • 3.1 삽입 SQL문의 시작 - 삽입 SQL 문을 원시 프로그램에서 사용하려면 삽입 SQL 문 앞에 exec sql문을 먼저 기입하여야 한다. • 예제 1 • <그림 5-4>의 학생(STUDENT) 릴레이션에서 컴퓨터공학과에 재학 중인 • 학생 수를 검색하여 호스트 변수인 nbrOfSt에 저장하라. • exec sql select count(*) into :nbrOfSt • from student • where dept = '컴퓨터공학과';

  6. 3 .2 호스트 문의 선언부 형식 • 삽입 SQL 프로그램에서 사용하는 변수는 범용 프로그래밍 언어에서와 같이 변수 선언이 필요하며 호스트 변수의 선언은 begin declare section과 end declare section 사이에 정의한다. 이것을 호스트 변수의 선언부라 한다. • 예제 2 • <예제 1>에서 사용한 호스트 변수인 nbrOfSt를 정수형 변수로 선언하는 • SQL 문을 작성하라. • exec sql begin declare section; • int nbrOfSt; • exec sql end declare section;

  7. 4. 커서 이용 방법 • 삽입 SQL 프로그램 작성 시에 데이터베이스의 투플을 검색하는 경우는 2가지이다. - 하나의 투플만을 검색하는 것. - 복수개의 투플을 검색하는 것. • 삽입 SQL 문에서 커서를 사용하는 단계 - 커서를 선언한다. • exec sqldeclare 커서_이름cursor for • 예제 3 • 소속학과를 호스트 변수로 입력받아 그 값과 동일한 학과에 재직 중인 • 교수의 교수번호, 이름, 직급을 검색하기 위한 커서를 선언하라. • 단, 커서 이름은 prof_cur로 정의하라. • exec sqldeclare prof_cur cursor for • select p_no, p_name, grade • from professor • where dept_no = :dept_no;

  8. 4. 커서 이용 방법 - 커서를 선언한 후에는 커서를 개방한다. - 커서를 개방한 후에는 fetch 문을 이용하여 결과 투플을 검색한다. • 예제 4 • <예제 3>에서 정의한 prof_cur 커서를 개방하라. • exec sqlopen prof_cur; • exec sqlfetch 커서_이름into 호스트변수+; • 예제 5 • <예제 3>의 select문이 검색한 결과를 호스트 변수로 검색하는 fetch∼into문을 • 작성하라. • exec sqlfetch prof_cur into :p_no, :p_name, :dept_no;

  9. 4. 커서 이용 방법 - 커서의 사용이 완료된 후에는 커서를 닫는다. • 예제 6 • <예제 3>부터 <예제 5>까지 사용한 prof_cur 커서를 닫아라. • exec sqlclose prof_cur;

  10. 5. 오류 처리 기법 • 삽입 SQL 프로그램에서 발생하는 오류를 처리하는 방법 - 첫번째 : X/OPEN SQL 표준에서 지원하는 sqlstate를 이용하는 것. - 두번째 : sqlca(SQL Communication Area : SQL 통신영역 ) 을 이용하는 것. • 5. 1 sqlstate 이용방식 - 삽입 SQL문의 실행 상태를 나타내는 변수인 sqlstate를 이용하여 오류를 처리할 수 있으며, 이 때 이용하는 문장이 whenever문이다 • exec sql whenever조건 적용연산;

  11. Whenever문의 조건과 적용연산 요약 사 용 내 용 의 미 조 건 (condition) sqlerror 오 류 not found 투플이 없음 sqlwarning 경 고 적용연산 (action) continue 프로그램의 흐름을 지속적으로 진행시킨다. goto 레이블 레이블 이름으로 표시된 곳으로 제어를 이동시킨다. stop 프로그램의 실행을 종료시킨다. call 함 수 조건에 따라 필요한 함수를 호출한다. • 예제 7 • sqlstate변수 값에 오류 조건이 존재하면 연산 실행을 중지하는 문장을 • 작성하라. • exec sqlwhenever sqlerror stop;

  12. 5.2 sqlca 이용 방식 • sqlca는 데이터베이스 시스템과 프로그램간에 정보를 전달하기 위한 기억 공간이다. 삽입 SQL문 실행 시에 오류가 발생하면 데이터베이스 시스템은 sqlca에 오류 상태를 저장한다. • exec sqlinclude sqlca;

  13. 6. 삽입, 삭제, 갱신 방식 6.1 삽입 방식 - value 절을 이용하여 투플을 직접 삽입하는 방법. - 부속 질의어를 이용하여 복수 개의 투플을 삽입하는 방법. <투플의 직접 삽입> exec sql insert into테이블[(열_이름_리스트)] values (열값_리스트); <부속 질의어를 이용한 삽입> exec sql insert into테이블[(열_이름_리스트)] select문;

  14. 6. 1 삽입 방식 • 예제 8 • 호스트 변수(:no, :name, :grade, :dept) 값으로 입력받는 내용을 제5장의 • 교수(PROFESSOR) 릴레이션에 삽입하는 문장을 작성하라. • exec sql insert • into professor(p_no, p_name, grade, dept_no) • values (:no, :name, :grade, :dept);

  15. 6. 2 삭제 방식 • 예제 9 • 교수(PROFESSOR) 릴레이션에 저장된 모든 투플을 삭제하는 문장을 작성하라. • exec sql delete • from professor; • 예제 10 • 호스트 변수(no)로 입력받은 값과 동일한 교수번호를 가진 교수 투플을 • 교수(PROFESSOR) 릴레이션에서 삭제하는 문장을 작성하라. • exec sql delete • from professor • where p_no = :no;;

  16. 6. 2 삭제 방식 • 예제 11 • prof_cur 커서가 가리키는 교수 투플을 교수(PROFESSOR) 릴레이션에서 • 삭제하는 문장을 작성하라. • exec sql delete • from professor • current of prof_cur;

  17. 6. 3 갱신 방식 - 탐색 후 갱신(searched update) 방식. - 위치 갱신(positioned update) 방식. <탐색 후 갱신> exec sql update 테이블 set {열_이름=산술식}+ [where조건]; <위치 갱신> exec sql update 테이블 set {열_이름=산술식}+ current of 커서_이름;

  18. 6. 3 갱신 방식 • 예제 12 • 교수(PROFESSOR) 릴레이션에 저장된 모든 투플들에 대하여 pay_step 값을 • 1씩 증가시키는 문장을 작성하라. • exec sql update professor • set pay_step = pay_step+1; • 예제 13 • 호스트 변수(no)로 입력받은 값과 동일한 교수번호를 가진 교수 투플의 • 전화번호(p_tel)를 1281로 변경하는 문장을 작성하라. • exec sql update professor • set p_tel = 1281 • where p_no = :no;

  19. 6. 3 갱신 방식 • 예제 14 • prof_cur 커서가 가리키는 교수 투플의 직급(grade)을 조교수로 변경하는 • 문장을 작성하라. • exec sql update professor • set grade = 조교수 • current of prof_cur;

  20. 7. 동적 SQL • 사용자의 입력 형식이 매우 다양하여 미리 예측이 불가능할 경우에는 정적 SQL을 이용 할 수가 없다. • 이러한 경우에는 동적 SQL(dynamic SQL) 을 사용한다.

More Related