很多人接觸資料庫,從資料庫表中查記錄最早應該是利用SQL語句字串,這也是我們開始操作資料庫表使用的SQL語言,那時也看過預存程序,只是不理解預存程序什麼意思,現在也只是簡單應用,瞭解一點點而已。
形象一些,預存程序就是完成一個特定功能的東西,和函數差不多,是一段程式碼的集合。
下面是通過在一個系統中的具體應用來協助學習、掌握、理解預存程序。同時學習也是一步一步逐漸深入的學習,從瞭解、認識、理解、應用的一個過程,學習的知識在於應用,也只有會靈活應用了,才是自己的。
預存程序概念:
預存程序(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中。使用者通過指定預存程序的名字並給出參數(如果該預存程序帶有參數)來執行它。 建立語句:
1 例如:建立一個預存程序,從“新聞類表”category、“新聞表”news中查詢最新的新聞若干條新聞(上一篇部落格中已有這兩個表的描述)
上面代碼是通過外部索引鍵關聯從category 、news兩個表中查詢最新的新聞,n 、c 分別為表起的別名(alias)。
紅色框表示內串連,此外還有交叉聯結、外聯結(左向外聯結,右向外聯結,完整外聯結)等類型,常用的是內串連,
內聯結的格式為:
資料表1
inner join 資料表2 on 聯結運算式
指定返回兩個表中所有匹配的行。
2 建立一個根據評論數,查詢熱點新聞的預存程序。
想要應用預存程序本質上還是要熟練運用SQL查詢語句,文法如下:
方框中的是不經常用但很重要的查詢關鍵字,其含義如下:
ALL:指明查詢結果中可以顯示值相同的列ALL是系統預設的 DISTINCT:指明查詢結果中如果有值相同的列,則只顯示其中的一列。對DISTINCT選項來說,Null
值被認為是相同的值 TOP n [PERCENT]:指定返回查詢結果的前n行資料,如果PERCENT關鍵字指定的話,則返回查詢結果的前百分之n行資料。
group_by_expression:指明分組條件group_by_expression通常是一個列名,但不能是列的別名。
ORDERBY子句指定查詢結果的排序方式。
ASC(ascending):指明查詢結果按升序排列這是系統預設值 DESC(descending):指明查詢結果按降序排列
在大點的資料庫系統中,預存程序具有很重要的作用。就本質而言它是SQL語句和流程式控制制語句的集合。預存程序在運算時產生執行方式,所以以後對其再運行時其執行速度很快。
我們可以多多運用,尤其是在Web-Server之間執行時,速度會快一些。
什麼時候使用預存程序比較合適?