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