日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解讀SQL存儲(chǔ)過(guò)程入門(mén)級(jí)教程_Mssql數(shù)據(jù)庫(kù)教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:按指定排列順序獲取數(shù)據(jù)的sql語(yǔ)句
測(cè)試table create table table1 (id int,name char) insert into table1 select 1,'q' union all select 2,'r' union all select 3,'3' union all select 4,'5' 要求按指定的id順序(比如2,1,4,3)排列獲取table1的數(shù)據(jù) 方法1: 使用union all,但是有256條數(shù)據(jù)的

1.SQL存儲(chǔ)過(guò)程概述

在 大型數(shù)據(jù)庫(kù)系統(tǒng)中,存儲(chǔ)過(guò)程和觸發(fā)器具有很重要的作用。無(wú)論是存儲(chǔ)過(guò)程還是觸發(fā)器,都是SQL 語(yǔ)句和流程控制語(yǔ)句的集合。就本質(zhì)而言,觸發(fā)器也是一種存儲(chǔ)過(guò)程。存儲(chǔ)過(guò)程在運(yùn)算時(shí)生成執(zhí)行方式,所以,以后對(duì)其再運(yùn)行時(shí)其執(zhí)行速度很快。SQL Server 2000 不僅提供了用戶自定義存儲(chǔ)過(guò)程的功能,而且也提供了許多可作為工具使用的系統(tǒng)存儲(chǔ)過(guò)程。

存儲(chǔ)過(guò)程的概念

存儲(chǔ)過(guò)程(Stored Procedure)是一組為了完成特定功能的SQL 語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)。中用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它。

在SQL Server 的系列版本中存儲(chǔ)過(guò)程分為兩類(lèi):系統(tǒng)提供的存儲(chǔ)過(guò)程和用戶自定義存儲(chǔ)過(guò)程。系統(tǒng)過(guò)程主要存儲(chǔ)在master 數(shù)據(jù)庫(kù)中并以sp_為前綴,并且系統(tǒng)存儲(chǔ)過(guò)程主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理SQL Server 提供支持。通過(guò)系統(tǒng)存儲(chǔ)過(guò)程,MS SQL Server 中的許多管理性或信息性的活動(dòng)(如了解數(shù)據(jù)庫(kù)對(duì)象、數(shù)據(jù)庫(kù)信息)都可以被順利有效地完成。盡管這些系統(tǒng)存儲(chǔ)過(guò)程被放在master 數(shù)據(jù)庫(kù)中,但是仍可以在其它數(shù)據(jù)庫(kù)中對(duì)其進(jìn)行調(diào)用,在調(diào)用時(shí)不必在存儲(chǔ)過(guò)程名前加上數(shù)據(jù)庫(kù)名。而且當(dāng)創(chuàng)建一個(gè)新數(shù)據(jù)庫(kù)時(shí),一些系統(tǒng)存儲(chǔ)過(guò)程會(huì)在新數(shù)據(jù)庫(kù)中 被自動(dòng)創(chuàng)建。用戶自定義存儲(chǔ)過(guò)程是由用戶創(chuàng)建并能完成某一特定功能(如查詢用戶所需數(shù)據(jù)信息)的存儲(chǔ)過(guò)程。在本章中所涉及到的存儲(chǔ)過(guò)程主要是指用戶自定義 存儲(chǔ)過(guò)程。

存儲(chǔ)過(guò)程的優(yōu)點(diǎn)

當(dāng)利用MS SQL Server 創(chuàng)建一個(gè)應(yīng)用程序時(shí),Transaction-SQL 是一種主要的編程語(yǔ)言。若運(yùn)用Transaction-SQL 來(lái)進(jìn)行編程,有兩種方法。其一是,在本地存儲(chǔ)Transaction- SQL 程序,并創(chuàng)建應(yīng)用程序向SQL Server 發(fā)送命令來(lái)對(duì)結(jié)果進(jìn)行處理。其二是,可以把部分用Transaction-SQL 編寫(xiě)的程序作為存儲(chǔ)過(guò)程存儲(chǔ)在SQL Server 中,并創(chuàng)建應(yīng)用程序來(lái)調(diào)用存儲(chǔ)過(guò)程,對(duì)數(shù)據(jù)結(jié)果進(jìn)行處理存儲(chǔ)過(guò)程能夠通過(guò)接收參數(shù)向調(diào)用者返回結(jié)果集,結(jié)果集的格式由調(diào)用者確定;返回狀態(tài)值給調(diào)用者,指 明調(diào)用是成功或是失�。话ㄡ槍�(duì)數(shù)據(jù)庫(kù)的操作語(yǔ)句,并且可以在一個(gè)存儲(chǔ)過(guò)程中調(diào)用另一存儲(chǔ)過(guò)程。 

我們通常更偏愛(ài)于使用第二種方法,即在SQL Server 中使用存儲(chǔ)過(guò)程而不是在客戶計(jì)算機(jī)上調(diào)用Transaction-SQL 編寫(xiě)的一段程序,原因在于存儲(chǔ)過(guò)程具有以下優(yōu)點(diǎn):

(1) 存儲(chǔ)過(guò)程允許標(biāo)準(zhǔn)組件式編程

存儲(chǔ)過(guò)程在被創(chuàng)建以后可以在程序中被多次調(diào)用,而不必重新編寫(xiě)該存儲(chǔ)過(guò)程的SQL 語(yǔ)句。而且數(shù)據(jù)庫(kù)專(zhuān)業(yè)人員可隨時(shí)對(duì)存儲(chǔ)過(guò)程進(jìn)行修改,但對(duì)應(yīng)用程序源代碼毫無(wú)影響(因?yàn)閼?yīng)用程序源代碼只包含存儲(chǔ)過(guò)程的調(diào)用語(yǔ)句),從而極大地提高了程序的可移植性。

(2) 存儲(chǔ)過(guò)程能夠?qū)崿F(xiàn)較快的執(zhí)行速度

如果某一操作包含大量的Transaction-SQL 代碼或分別被多次執(zhí)行,那么存儲(chǔ)過(guò)程要比批處理的執(zhí)行速度快很多。因?yàn)榇鎯?chǔ)過(guò)程是預(yù)編譯的,在首次運(yùn)行一個(gè)存儲(chǔ)過(guò)程時(shí),查詢優(yōu)化器對(duì)其進(jìn)行分析、優(yōu)化,并 給出最終被存在系統(tǒng)表中的執(zhí)行計(jì)劃。而批處理的Transaction- SQL 語(yǔ)句在每次運(yùn)行時(shí)都要進(jìn)行編譯和優(yōu)化,因此速度相對(duì)要慢一些。

(3) 存儲(chǔ)過(guò)程能夠減少網(wǎng)絡(luò)流量

對(duì)于同一個(gè)針對(duì)數(shù)據(jù)數(shù)據(jù)庫(kù)對(duì)象的操作(如查詢、修改),如果這一操作所涉及到的 Transaction-SQL 語(yǔ)句被組織成一存儲(chǔ)過(guò)程,那么當(dāng)在客戶計(jì)算機(jī)上調(diào)用該存儲(chǔ)過(guò)程時(shí),網(wǎng)絡(luò)中傳送的只是該調(diào)用語(yǔ)句,否則將是多條SQL 語(yǔ)句,從而大大增加了網(wǎng)絡(luò)流量,降低網(wǎng)絡(luò)負(fù)載。

分享:總結(jié)經(jīng)典常用的SQL語(yǔ)句(2)
向表中添加一個(gè)新記錄,你要使用SQLINSERT語(yǔ)句。 這里有一個(gè)如何使用這種語(yǔ)句的例子: INSERTmytable(mycolumn)VALUES(‘somedata’) 這個(gè)語(yǔ)句把字符串’somedata’插入表mytable的mycolumn字段中。將要被插入數(shù)據(jù)的字段的名字在第一個(gè)括號(hào)中指定,實(shí)際的數(shù)

共6頁(yè)上一頁(yè)123456下一頁(yè)
來(lái)源:模板無(wú)憂//所屬分類(lèi):Mssql數(shù)據(jù)庫(kù)教程/更新時(shí)間:2010-04-06
相關(guān)Mssql數(shù)據(jù)庫(kù)教程