解讀SQL存儲(chǔ)過(guò)程入門(mén)級(jí)教程_Mssql數(shù)據(jù)庫(kù)教程
教程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ù)
相關(guān)Mssql數(shù)據(jù)庫(kù)教程:
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類(lèi)似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 談SQL Server數(shù)據(jù)庫(kù)管理常用的SQL和T-SQL語(yǔ)句
- order by newid() 各種數(shù)據(jù)庫(kù)隨機(jī)查詢的方法
- 查詢表中某字段有重復(fù)記錄個(gè)數(shù)的方法
- 教你SQL Server日志清除的兩種方法
- SQL Server中怎么得到自動(dòng)編號(hào)字段解析
- SQL Server 2005 CE軟件環(huán)境需求
- SQL Server數(shù)據(jù)庫(kù)備份和恢復(fù)說(shuō)明
- 解答SQL Server日志文件損壞嚴(yán)重的問(wèn)題
- 怎樣用SQL Server事件探查器創(chuàng)建跟蹤
- 詳解SQL Server 2008中的聯(lián)機(jī)事務(wù)處理
猜你也喜歡看這些
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)以及函數(shù)、存儲(chǔ)過(guò)程的介紹
- mysql密碼過(guò)期導(dǎo)致連接不上mysql
- MySQL的安全問(wèn)題從安裝開(kāi)始說(shuō)起
- Mysql建表與索引使用規(guī)范詳解
- mysql與mysqli的區(qū)別與用法
- MYSQL索引無(wú)效和索引有效的詳細(xì)介紹
- 解決sql server 2005 express中sa不能登錄
- mysql常用設(shè)置:字符集編碼、自動(dòng)完成(自動(dòng)提示)、監(jiān)聽(tīng)外網(wǎng)ip
- jdbc調(diào)用mysql存儲(chǔ)過(guò)程實(shí)現(xiàn)代碼
- mysql 定時(shí)更新表字段列的值狀態(tài)
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-解讀SQL存儲(chǔ)過(guò)程入門(mén)級(jí)教程
。