第九講
1.關於嵌入式sql:由於交互式sql的侷限性而誕生的一種sql形式
2.交互式sql的侷限性:
①首先就是用戶不友好,要掌握交互式SQL,寫出繁瑣的查找條件,很大程度上必須依靠專業學習
②有些複雜的檢索難以通過一條交互式sql來完成,此時如果能夠引用高級語言的順序執行,循環,分支則會更好地解決問題
3.嵌入式sql的特性:
4.示範例子:
前綴 exec sql用於提供給編譯器,使其識別將要執行的是嵌入式sql
into:則是將檢索出來的結果賦值到程序變量中,而在外部的調用則無需“:”,而且這些程序變量都需要提前聲明
其次,作爲程序變量,同時能夠注入查詢條件。(一部分DBMS能夠處理數據類型不一致,有些則不行)
5.程序與數據庫的連接與斷開:
6.sql語句的提交與撤銷:只有通過了提交與撤銷才能確定操作的結果。
7.事務:一次存取或改變數據庫的行爲,或者是一條或者多條的sql語句執行的行爲
當確認到提交或撤銷是,上面的sql語句纔會被視爲一個事務去進行。
8.事務的特性:
何爲可恢復,即恢復到執行上述的sql語句之前的狀態。
9.遊標:用於檢索多行的數據
遊標的使用流程:①定義一個遊標 ②open遊標 ③fetch(每次的fetch都會使得遊標往下一個元組,當碰到EOF即數據讀完了),④close遊標 (每次open遊標都會重新從第一行開始讀取數據)
遊標定義公式:
遊標的關閉和打開:
遊標讀取數據:
10.由ODBC支持的可滾動遊標:
當聲明SCROLL時,就會生成一個具有滾動功能的遊標,
NEXT爲向後讀取,PRIOR爲向後讀取,FIRST爲讀取第一個,LAST爲讀取最後一個,ABSOLUTE爲讀取絕對位置,RELATIVE爲讀取相對位置
11.用遊標來實現定位刪除:
分析:①先定義一個遊標,2,3兩行則是遊標的子查詢,遊標會在該子查詢中遍歷,4則是遊標的用途,read only或者update
②open 遊標,開始工作,然後取出元組,然後sql對遊標所指的地方進行刪除
定位更新也是一致,改變遊標聲明的where條件,用於檢索出相應的元組集進行檢索,再進行修改
12.嵌入式sql的插入
13.狀態捕獲以及處理:
①有三部分構成:
②sqlCA:
③狀態捕獲:
④關於異常捕獲的作用範圍:從自己開始,直到下一個whenever的出現
14.DBMS記錄狀態的三種方式:
15.有隱式處理和顯示處理兩種方式:前者不會獲取錯誤的實際狀態變量,只需知道是否發生了錯誤;而後者則需要獲取,並根據錯誤狀態變量來決定處理方式。
以此來包裹主需要被監視的語句,從而準確獲取的錯誤信息
第十講
1.何爲動態sql:與靜態sql不同,動態sql會預先存入一個字符串中,然後等待執行的時候再傳入,然後交由DBMS來處理
在體現上區分動態sql和靜態sql:前者體現爲一串字符串,而後者則爲sql語句
2.構造字符串,要通過字符串拼接,裝在變量,最後形成待執行的sql語句(過程中要通過邏輯判定,從而決定內容)
執行
拼接
3.動態sql的兩種執行方式:
前者爲直接就執行,而後者需要傳入變量再執行
4.數據字典:(由表和視圖組成,而且僅向DBA展示部分,不是所有用戶都看看見和操作的)
5.數據字典中的模式:
6.ORACLE中的視圖:
7.SQLDA:
由於其存放列的詳細信息,可用於構建更爲複雜的動態sql
區分SQLCA和SQLDA:
8.ODBC&JDBC:
其實就是一系列的標準接口,通過調用這些接口來獲取數據庫連接,並操作數據庫
默認情況下:每條sql指令都會自動提交,但是可以關閉自動提交,並實行事務提交和撤銷:
jdbc流程:
9.思維模式的區分:①嵌入式操作的是遊標,odbc操作的是句柄,jdbc操作的是對象 ②三者在什麼時候完成高級語言變量與屬性的綁定: