[수업 정리] - 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> ;
-
SQLCODE 및 SQLSTATE 통신 변수
- 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
- Added using value: NEXT, PRIOR, FIRST, LAST,
8. Specifying Queries at Runtime Using Dynamic SQL
-
Dynamic SQL
-
런타임에 다른 SQL 쿼리 또는 업데이트를 동적으로 실행
-
Dynamic update
-
Dynamic query
-
-
- prompt로 입력을 받기 때문에 dinamic
Author And Source
이 문제에 관하여([수업 정리] - 10주차 ①), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@corone_hi/데이터-베이스-수업-정리-10주차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)