第18章 使用視圖
可以把視圖想象成有以下限制的表來用:
1.視圖是虛擬表,它只包含使用時動態(tài)檢索數(shù)據(jù)的查詢。
2.視圖可以嵌套,可以利用其他的視圖來構(gòu)建新的視圖。
3.許多DBMS限制在視圖中使用Order by子句
4.視圖不能索引,也不能有關(guān)聯(lián)的觸發(fā)器和默認值。
5.有些DBMS規(guī)定視圖是只讀的,只能檢索數(shù)據(jù)不能將數(shù)據(jù)寫回系統(tǒng)。當(dāng)也有一下DBMS是這樣的,它不運行執(zhí)行導(dǎo)致行不再屬于這個視圖的插入和更新。
最好的用之前查手冊.
創(chuàng)建語法:CREATE VIEW viewname AS SELECT...
第19章 使用存儲過程
存儲過程可以看成為了以后使用而預(yù)先定義好的一條或多條Sql語句的集合.
1.存儲過程的好處:
簡單:Sql語句封裝,避免重復(fù)編寫,可重復(fù)調(diào)用,修改方便。
安全:統(tǒng)一調(diào)用減少訛誤。
高效:通過編譯后的形式存儲,執(zhí)行效率高。
2.存儲過程的不好處:
不統(tǒng)一:各個DBMS對存儲過程的使用語法和實現(xiàn)均不統(tǒng)一,破壞了系統(tǒng)的可移植性。復(fù)雜:相對SQL而言,更復(fù)雜,更需要經(jīng)驗。
具體的還是看手冊來的實際。
第20章 控制事務(wù)處理
事務(wù)處理(transaction processing)用來維護數(shù)據(jù)庫的完整。這個日常開發(fā)中遇見的N多。
1.看看這幾個詞,transaction 事務(wù),rollback 回滾,commit 提交 ,savepoint 保留點。說明一下savepoint,其他的不用多言了。
2.savapoint:事務(wù)處理過程中的臨時占位符(placeholder),你可以對它發(fā)布回退.
3.不是所有的都可以回退的,一般而言Insert,update可以回退,但是select(沒必要),create ,drop不能回退,但是事務(wù)處理中可以使用這些語句,但進行回退時,它們不被撤銷.
4.一般DBMS會隱含提交(implicit commit),即sql語句執(zhí)行過程中,提交操作會自動執(zhí)行。所以要顯示的聲明事務(wù)的開始和提交。
5.MS SQL 里面關(guān)于事務(wù)的例子,可以體會Savepoint的使用。
BEGIN TRANSACTION; DELETE OrderItems WHERE order_num =12345; SAVE TRANSACTION deleteDI; DELETE Orders WHERE order_num =12345; COMMIT TRANSACTION; ROLLBACK TRANSACTION deleteDI;
第21章 使用游標(biāo)
可以理解游標(biāo)其實就是操作結(jié)構(gòu)集的一種機制。
1.游標(biāo)總是與一條T_SQL 選擇語句相關(guān)聯(lián)因為游標(biāo)由結(jié)果集(可以是零條、一條或由相關(guān)的選擇語句檢索出的多條記錄)和結(jié)果集中指向特定記錄的游標(biāo)位置組成。
2.游標(biāo)主要用于交換式應(yīng)用,其中用戶需要滾動屏幕上的數(shù)據(jù)并對數(shù)據(jù)瀏覽或操作。游標(biāo)在客戶端和服務(wù)器會話期間存在,而Web開發(fā)中,應(yīng)用服務(wù)器為數(shù)據(jù)庫客戶端而不是最終用戶,所以游標(biāo)在web開發(fā)中用的不多,web開發(fā)多使用自己開發(fā)的功能來實現(xiàn)相關(guān)操作.
具體使用不通DBMS寫法不一樣,需要參考手冊。
第22章 了解高級SQL特性
1.約束,常見的約束有這些,主鍵,外鍵,唯一約束等。
2.唯一約束與主鍵的區(qū)別:一個表可以有多個唯一約束,但是表只允許一個主鍵;唯一約束可以有Null,唯一約束可以修改或更新,唯一約束的值可以重復(fù)使用,唯一約束不能用來定義外鍵.
3.檢查約束,用來限制列中可保存的數(shù)據(jù)的類型。
一個例子:
CREATE TABLE OrderItems ( ... quantity INTEGER NOT NULL CHECK (quantity > 0), ... );
4.索引,老朋友了。有些要注意的地方
a.索引改善檢索操作的性能,但是會降低數(shù)據(jù)插入,修改和刪除的性能。
b.索引數(shù)據(jù)可能占有大量的存儲空間.
c.選擇索引列的條件:該列的唯一性要求比較好,重復(fù)值比較多的列不適合做索引;如果一個列經(jīng)常數(shù)據(jù)過濾或者排序,可以考慮索引來優(yōu)化性能.
d.一個表可以有多個索引列.
5.觸發(fā)器,特殊的存儲過程,它在特定的數(shù)據(jù)庫活動發(fā)生時自動執(zhí)行.但是注意觸發(fā)器的效率不如約束快。
到這里《SQL必知必會》就完了。內(nèi)容比較簡單.
平凡而簡單的人一個,無權(quán)無勢也無牽無掛。一路廝殺,只進不退,死而后已,豈不爽哉!
收起對“車”日行千里的羨慕;收起對“馬”左右逢緣的感嘆;目標(biāo)記在心里面,向前進。一次一步,一步一腳印,跬步千里。
這個角色很適合現(xiàn)在的我。