国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
數(shù)據(jù)庫中存儲過程、函數(shù)、觸發(fā)器

比較項目

存儲過程

函數(shù)

是否有返回值

可以有,也可以沒有

必須有且只有一個

是否可以單獨執(zhí)行

可以

必須通過execute執(zhí)行

SQL語句(DML或SELECT)可否調(diào)用

不可以

可以,且可以位于FROM關(guān)鍵字的后面(由于可以返回表對象)

參數(shù)類型

可以使用IN、OUT、IN OUT三種模式的參數(shù)

只有IN,Oracle可以使用IN、OUT、IN OUT三種參數(shù)

返回值類型

可以通過OUT、IN OUT參數(shù)返回零個或多個參數(shù)值

單一值或一個表對象

 

【我的理解】

SQL語句: 一句SQL語句就是一個命令,而一般來說一個命令只執(zhí)行一件事。
存儲過程: 里面可以有多個SQL語句,用事物可以保證多句語句必須都執(zhí)行成     
          功,這個存儲過程才執(zhí)行。
觸發(fā)器:是在對表進行插入、更新或刪除操作時自動執(zhí)行的存儲過程,觸發(fā)器通常用于強制業(yè)務(wù)規(guī)則。觸發(fā)器還是一個特殊的事務(wù)單元,當出現(xiàn)錯誤時,可以執(zhí)行ROLLBACK TRANSACTION回滾撤銷操作。 

【站在巨人的肩膀上】 

觸發(fā)器原理:

觸發(fā)器與存儲過程可以說是非常相似,可以說是一種變種的存儲過程,觸發(fā)器和存儲過程一樣都是SQL語句集,通常通過創(chuàng)建觸發(fā)器來強制實現(xiàn)不同表中的邏輯相關(guān)數(shù)據(jù)的引用完整性和一致性。由于用戶不能繞過觸發(fā)器,所以可以用它來強制實施復雜的業(yè)務(wù)規(guī)則,以確保數(shù)據(jù)的完整性。觸發(fā)器不同于存儲過程,觸發(fā)器主要是通過事件執(zhí)行觸發(fā)而被執(zhí)行的,而存儲過程可以通過存儲過程名稱名字而直接調(diào)用。當對某一表進行諸如UPDATE、INSERT、DELETE這些操作時,SQLSERVER就會自動執(zhí)行觸發(fā)器所定義的SQL語句,從而確保對數(shù)據(jù)的處理必須符合這些SQL語句所定義的規(guī)則。

觸發(fā)器的作用:

觸發(fā)器的主要作用是其能夠?qū)崿F(xiàn)由主鍵和外鍵所不能保證的復雜的參照完整性和數(shù)據(jù)的一致性。它能夠?qū)?shù)據(jù)庫中的相關(guān)表進行級聯(lián)修改,強制比CHECK約束更復雜的數(shù)據(jù)完整性,并自定義操作消息,維護非規(guī)范化數(shù)據(jù)以及比較數(shù)據(jù)修改前后的狀態(tài)。與CHECK約束不同,觸發(fā)器可以引用其它表中的列。在下列情況下使用觸發(fā)器實現(xiàn)復雜的引用完整性;強制數(shù)據(jù)間的完整性。創(chuàng)建多行觸發(fā)器,當插入,更新、刪除多行數(shù)據(jù)時,必須編寫一個處理多行數(shù)據(jù)的觸發(fā)器。執(zhí)行級聯(lián)更新或級聯(lián)刪除這樣的動作。級聯(lián)修改數(shù)據(jù)庫中所有相關(guān)表。撤銷或者回滾違反引用完整性的操作,防止非法修改數(shù)據(jù)。

觸發(fā)器與存儲過程的區(qū)別:

觸發(fā)器與存儲過程的主要區(qū)別在于觸發(fā)器的運行方式。存儲過程必須有用戶、應(yīng)用程序或者觸發(fā)器來顯示的調(diào)用并執(zhí)行,而觸發(fā)器是當特定時間出現(xiàn)的時候,自動執(zhí)行或者激活的,與連接用數(shù)據(jù)庫中的用戶、或者應(yīng)用程序無關(guān)。當一行被插入、更新或者刪除時觸發(fā)器才執(zhí)行,同時還取決于觸發(fā)器是怎樣創(chuàng)建的,當UPDATE發(fā)生時使用一個更新觸發(fā)器,當INSERT發(fā)生時使用一個插入觸發(fā)器,當DELETE發(fā)生時使用一個刪除觸發(fā)器

 

存儲過程函數(shù)的區(qū)別:
1. 一般來說,存儲過程實現(xiàn)的功能要復雜一點,而函數(shù)的實現(xiàn)的功能針對性比較強。
2. 對于存儲過程來說可以返回參數(shù),而函數(shù)只能返回值或者表對象。
3. 存儲過程一般是作為一個獨立的部分來執(zhí)行,而函數(shù)可以作為查詢語句的一個部分來調(diào)用,由于函數(shù)可以返回一個表對象,因此它可以在查詢語句中位于FROM關(guān)鍵字的后面。
4. 當存儲過程和函數(shù)被執(zhí)行的時候,SQL Manager會到procedure cache中去取相應(yīng)的查詢語句,如果在procedure cache里沒有相應(yīng)的查詢語句,SQL Manager就會對存儲過程和函數(shù)進行編譯。
Procedure cache中保存的是執(zhí)行計劃 (execution plan) ,當編譯好之后就執(zhí)行procedure cache中的execution plan,之后SQL SERVER會根據(jù)每個execution plan的實際情況來考慮是否要在cache中保存這個plan,評判的標準一個是這個execution plan可能被使用的頻率;其次是生成這個plan的代價,也就是編譯的耗時。保存在cache中的plan在下次執(zhí)行時就不用再編譯了。
觸發(fā)器、存儲過程和函數(shù)三者有何區(qū)別:
觸發(fā)器是特殊的存儲過程,存儲過程需要程序調(diào)用,而觸發(fā)器會自動執(zhí)行;
在什么時候用觸發(fā)器?要求系統(tǒng)根據(jù)某些操作自動完成相關(guān)任務(wù)。
什么時候用存儲過程?
存儲過程就是程序,它是經(jīng)過語法檢查和編譯的SQL語句,所以運行特別快。
存儲過程和用戶自定義函數(shù)具體的區(qū)別
先看定義: 存儲過程存儲過程可以使得對數(shù)據(jù)庫的管理、以及顯示關(guān)于數(shù)據(jù)庫及其用戶信息的工作容易得多。存儲過程是 SQL 語句和可選控制流語句的預編譯集合,以一個名稱存儲并作為一個單元處理。
存儲過程存儲在數(shù)據(jù)庫內(nèi),可由應(yīng)用程序通過一個調(diào)用執(zhí)行,而且允許用戶聲明變量、有條件執(zhí)行以及其它強大的編程功能。存儲過程可包含程序流、邏輯以及對數(shù)據(jù)庫的查詢。它們可以接受參數(shù)、輸出參數(shù)、返回單個或多個結(jié)果集以及返回值。 可以出于任何使用 SQL 語句的目的來使用存儲過程,它具有以下優(yōu)點: 可以在單個存儲過程中。

 

1)一般來說,存儲過程實現(xiàn)的功能要復雜一點,而函數(shù)實現(xiàn)的功能針對性比較強。 
2)存儲過程一般是作為一個獨立的部分來執(zhí)行,而函數(shù)可以作為查詢語句的一個部分來調(diào)用。由于函數(shù)可以返回一個表對象,因此它可以在查詢語句中位于FROM關(guān)鍵字的后面。

存儲過程

存儲過程(Stored Procedure )是一組為了完成特定功能的SQL 語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中。存儲過程經(jīng)過語法檢查和編譯的SQL語句,所以執(zhí)行速度比普通的SQL語句的執(zhí)行速度快。用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。

特點

1.       存儲過程只在創(chuàng)建時進行編譯,以后執(zhí)行存儲過程都不需再重新編譯,而一般SQL語句每執(zhí)行一次就編譯一次,所以使用存儲過程可提高數(shù)據(jù)庫執(zhí)行速度。

2.       當對數(shù)據(jù)庫進行復雜操作時(如對多個表進行Update、Insert、Query、Delete時),可將此復雜操作用存儲過程封裝起來。

3.       可以在過程中調(diào)用另一個存儲過程。可以在存儲過程中調(diào)用函數(shù)。這可以簡化一系列復雜語句。

4.       安全性高,可設(shè)定只有某用戶才具有對指定存儲過程的使用權(quán)。

5.       參數(shù)有三種(IN、OUT、IN OUT),可返回多個參數(shù)值。

6.       在ORACLE 中,若干個有聯(lián)系的過程可以組合在一起構(gòu)成程序包。

7.       存儲過程是數(shù)據(jù)庫中的一個重要對象,任何一個設(shè)計良好的數(shù)據(jù)庫應(yīng)用程序都應(yīng)該用到存儲過程。

缺點

1.       不可移植性,每種數(shù)據(jù)庫的內(nèi)部編程語法都不太相同,當需要兼容多種數(shù)據(jù)庫時,最好不要用存儲過程。

2.       業(yè)務(wù)邏輯多處存在,采用存儲過程后也就意味著你的系統(tǒng)有一些業(yè)務(wù)邏輯不是在應(yīng)用程序里處理,這種架構(gòu)會增加一些系統(tǒng)維護和調(diào)試成本。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
新熱消息:存儲過程、函數(shù)、觸發(fā)器
Oracle數(shù)據(jù)庫課程的教與學(教學大綱)
《SQL Server數(shù)據(jù)庫應(yīng)用開發(fā)技術(shù)》第9章 用戶定義函數(shù)、存儲過程與觸發(fā)器
第08章 存儲過程、游標和觸發(fā)器
IT公司面試手冊 - SQL Server面試題 – SQL SERVER面試資料
存儲過程和觸發(fā)器優(yōu)缺點
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服