[수업 정리] - 10주차 ①




Introduction to SQL Programming Techniques


  • Database applications

    • Host language

      • Java, C/C++/C#, python, COBOL, or some other programming language
    • Data sub-language

      • SQL
  • SQL standards

    • 지속적으로 진화

    • 각 DBMS 공급 업체는 표준에서 약간의 차이가 있을 수 있습니다.



1. Database Programming: Techniques and Issues


  • Interactive interface (ISQL)

    • 모니터에 직접 입력 된 SQL 명령
  • 명령 파일 실행

    • @<filename>
  • Application programs or database applications

    • 최종 사용자가 데이터베이스에 액세스 하여 미리 준비된 트랜잭션(canned transactions)으로 사용

    • 웹 인터페이스(Web interface)가 있을 수 있습니다.



2. Approaches to Database Programming


  • 범용 프로그래밍 언어에 데이터베이스 명령 포함

    • 특수 접두사로 식별되는 데이터베이스 문

    • 전처리기(Precompiler) 또는 전처리기(Preprocessor)가 소스 프로그램 코드를 스캔합니다.

      • 데이터베이스 문 식별

      • DBMS에서 처리하기 위해 추출

    • Called Embedded SQL (ESQL)


  • 방법 1 : 데이터베이스 함수 라이브러리 사용

    • 호스트 프로그래밍 언어에서 사용할 수 있는 기능 라이브러리(Library of functions)

    • Application programming interface (API)

  • 방법 2 : 새로운 언어 디자인

    • 처음부터 설계된 데이터베이스 프로그래밍 언어

→ 방법 1의 2가지 방법이 더 보편적임.



3. Impedance Mismatch: database vs. PL


  • 데이터베이스 모델과 프로그래밍 언어 모델의 차이점

  • 각 호스트 프로그래밍 언어에 대한 바인딩

    • 각 attribute의 타입에 대해, 호환이 가능한 programming language의 타입을 명시한다.
  • Cursor or iterator variable

    • 커서를 가지고, 질의 결과로 나온 tuple들에 대해 loop를 돌면서 하나 하나씩 가져올 수 있도록 하는 기능이 있다.



4. Typical Sequence of Interaction in Database Programming


  • database server에 대한 connection을 OPEN 한다.

  • 이 connection을 가지고 있어야, queries, updates, other database commands를 실행할 때 database를 가지고 Interact 할 수 있다.

  • 다 사용했으면, terminate or close 한다.



5. Embedded SQL, Dynamic SQL, and SQLJ


  • Embedded SQL

    • C language
  • SQLJ

    • Java language에서는 SQLJ라고 호칭
  • Programming language를 host language라고 부른다.



6. Retrieving Single Tuples with Embedded SQL


  • EXEC SQL

    • Prefix (데이터베이스 관련 예약어 문장임을 알림)

    • 전처리기는 Embedded SQL 문을 호스트 언어 코드에서 분리합니다.

    • 일치하는 END-EXEC에 의해 종료 됨

      • Or by a semicolon (;)

  • 공유 변수 (Shared variables)

    • C 프로그램 및 Embedded SQL 문 모두에서 사용된다.

    • SQL 문에서 콜론 (:) 접두사

  • 데이터베이스에 연결 (Connecting to the database)

  CONNECT TO <server name> AS <connection name>
  AUTHORIZATION <user account name and password> ;
  • 연결 변경 (Change connection)

  SET CONNECTION <connection name> ;
  • 연결 종료 (Terminate connection)

  DISCONNECT <connection name> ;

  • SQLCODESQLSTATE 통신 변수

    • exception 이나 error 상태 정보가 발생된 경우, DBMS와 소통하기 위해사용됨.
  • SQLCODE 변수

    • 0 = 성공적으로 실행 된 문

    • 100 = 쿼리 결과에 더 이상 데이터가 없다.

    • < 0 = 일부 오류가 발생했음을 나타낸다. (음수 : 오류 발생 상태)


  • SQLSTATE

    • 5 자리 문자열

    • ‘00000’ = 오류 또는 예외 없음

    • 다른 값은 다양한 오류 또는 예외를 나타냅니다.

      • '02000'은 SQLSTATE를 사용할 때 '더 이상 데이터 없음'을 나타냅니다.



  • SQLCODE는 회사에서 제공하는 에러 코드를 확인해보면 된다.

  • EXEC SQL에서 SELECT문에 있는 변수들은 데이터베이스의 변수이고, INTO에 있는 변수들은(:을 포함한다.) High Level Language에 정의한 변수들이다.

  • if문에서 SQLCODE 설정



7. Retrieving Multiple Tuples with Embedded SQL Using Cursors


  • Cursor

    • 쿼리 결과에서 단일 튜플 (행)을 가리 킵니다.
  • OPEN CURSOR 명령

    • 쿼리 결과를 가져오고 결과에서 첫 번째 행 앞의 위치에 커서를 설정합니다.

    • 커서의 현재 행이 됨

  • FETCH 명령

    • 쿼리 결과에서 커서를 다음 행으로 이동



  • EXEC으로 데이터베이스 접근

  • 값이 여러개 일 때, DECLARE EMP CURSOR FOR로 커서를 선언한다.

  • OPEN EMP를 해서 접근 (박스가 열린다.)

  • FETCH로 정의한 변수들을 가져온다.

    • SQLCODE로 정상적으로 작동하는 아이들을 가져오도록 한다.

    • while문으로 FETCH를 반복한다.



  • FOR UPDATE OF

    • 프로그램에서 업데이트 할 속성의 이름을 나열하십시오.

  • Fetch 방향 (Orientation)

    • Added using value: NEXT, PRIOR, FIRST, LAST,
      ABSOLUTE i, and RELATIVE i



8. Specifying Queries at Runtime Using Dynamic SQL


  • Dynamic SQL

    • 런타임에 다른 SQL 쿼리 또는 업데이트를 동적으로 실행

      • Dynamic update

      • Dynamic query

  • prompt로 입력을 받기 때문에 dinamic

좋은 웹페이지 즐겨찾기