解讀SQL存儲過程入門級教程_Mssql數(shù)據(jù)庫教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:按指定排列順序獲取數(shù)據(jù)的sql語句測試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存儲過程概述在 大型數(shù)據(jù)庫系統(tǒng)中,存儲過程和觸發(fā)器具有很重要的作用。無論是存儲過程還是觸發(fā)器,都是SQL 語句和流程控制語句的集合。就本質(zhì)而言,觸發(fā)器也是一種存儲過程。存儲過程在運(yùn)算時(shí)生成執(zhí)行方式,所以,以后對其再運(yùn)行時(shí)其執(zhí)行速度很快。SQL Server 2000 不僅提供了用戶自定義存儲過程的功能,而且也提供了許多可作為工具使用的系統(tǒng)存儲過程。
存儲過程的概念
存儲過程(Stored Procedure)是一組為了完成特定功能的SQL 語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫。中用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。
在SQL Server 的系列版本中存儲過程分為兩類:系統(tǒng)提供的存儲過程和用戶自定義存儲過程。系統(tǒng)過程主要存儲在master 數(shù)據(jù)庫中并以sp_為前綴,并且系統(tǒng)存儲過程主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理SQL Server 提供支持。通過系統(tǒng)存儲過程,MS SQL Server 中的許多管理性或信息性的活動(dòng)(如了解數(shù)據(jù)庫對象、數(shù)據(jù)庫信息)都可以被順利有效地完成。盡管這些系統(tǒng)存儲過程被放在master 數(shù)據(jù)庫中,但是仍可以在其它數(shù)據(jù)庫中對其進(jìn)行調(diào)用,在調(diào)用時(shí)不必在存儲過程名前加上數(shù)據(jù)庫名。而且當(dāng)創(chuàng)建一個(gè)新數(shù)據(jù)庫時(shí),一些系統(tǒng)存儲過程會在新數(shù)據(jù)庫中 被自動(dòng)創(chuàng)建。用戶自定義存儲過程是由用戶創(chuàng)建并能完成某一特定功能(如查詢用戶所需數(shù)據(jù)信息)的存儲過程。在本章中所涉及到的存儲過程主要是指用戶自定義 存儲過程。
存儲過程的優(yōu)點(diǎn)
當(dāng)利用MS SQL Server 創(chuàng)建一個(gè)應(yīng)用程序時(shí),Transaction-SQL 是一種主要的編程語言。若運(yùn)用Transaction-SQL 來進(jìn)行編程,有兩種方法。其一是,在本地存儲Transaction- SQL 程序,并創(chuàng)建應(yīng)用程序向SQL Server 發(fā)送命令來對結(jié)果進(jìn)行處理。其二是,可以把部分用Transaction-SQL 編寫的程序作為存儲過程存儲在SQL Server 中,并創(chuàng)建應(yīng)用程序來調(diào)用存儲過程,對數(shù)據(jù)結(jié)果進(jìn)行處理存儲過程能夠通過接收參數(shù)向調(diào)用者返回結(jié)果集,結(jié)果集的格式由調(diào)用者確定;返回狀態(tài)值給調(diào)用者,指 明調(diào)用是成功或是失��;包括針對數(shù)據(jù)庫的操作語句,并且可以在一個(gè)存儲過程中調(diào)用另一存儲過程。
我們通常更偏愛于使用第二種方法,即在SQL Server 中使用存儲過程而不是在客戶計(jì)算機(jī)上調(diào)用Transaction-SQL 編寫的一段程序,原因在于存儲過程具有以下優(yōu)點(diǎn):
(1) 存儲過程允許標(biāo)準(zhǔn)組件式編程
存儲過程在被創(chuàng)建以后可以在程序中被多次調(diào)用,而不必重新編寫該存儲過程的SQL 語句。而且數(shù)據(jù)庫專業(yè)人員可隨時(shí)對存儲過程進(jìn)行修改,但對應(yīng)用程序源代碼毫無影響(因?yàn)閼?yīng)用程序源代碼只包含存儲過程的調(diào)用語句),從而極大地提高了程序的可移植性。
(2) 存儲過程能夠?qū)崿F(xiàn)較快的執(zhí)行速度
如果某一操作包含大量的Transaction-SQL 代碼或分別被多次執(zhí)行,那么存儲過程要比批處理的執(zhí)行速度快很多。因?yàn)榇鎯^程是預(yù)編譯的,在首次運(yùn)行一個(gè)存儲過程時(shí),查詢優(yōu)化器對其進(jìn)行分析、優(yōu)化,并 給出最終被存在系統(tǒng)表中的執(zhí)行計(jì)劃。而批處理的Transaction- SQL 語句在每次運(yùn)行時(shí)都要進(jìn)行編譯和優(yōu)化,因此速度相對要慢一些。
(3) 存儲過程能夠減少網(wǎng)絡(luò)流量
對于同一個(gè)針對數(shù)據(jù)數(shù)據(jù)庫對象的操作(如查詢、修改),如果這一操作所涉及到的 Transaction-SQL 語句被組織成一存儲過程,那么當(dāng)在客戶計(jì)算機(jī)上調(diào)用該存儲過程時(shí),網(wǎng)絡(luò)中傳送的只是該調(diào)用語句,否則將是多條SQL 語句,從而大大增加了網(wǎng)絡(luò)流量,降低網(wǎng)絡(luò)負(fù)載。
分享:總結(jié)經(jīng)典常用的SQL語句(2)向表中添加一個(gè)新記錄,你要使用SQLINSERT語句。 這里有一個(gè)如何使用這種語句的例子: INSERTmytable(mycolumn)VALUES(‘somedata’) 這個(gè)語句把字符串’somedata’插入表mytable的mycolumn字段中。將要被插入數(shù)據(jù)的字段的名字在第一個(gè)括號中指定,實(shí)際的數(shù)
相關(guān)Mssql數(shù)據(jù)庫教程:
- sql 語句練習(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 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 談SQL Server數(shù)據(jù)庫管理常用的SQL和T-SQL語句
- order by newid() 各種數(shù)據(jù)庫隨機(jī)查詢的方法
- 查詢表中某字段有重復(fù)記錄個(gè)數(shù)的方法
- 教你SQL Server日志清除的兩種方法
- SQL Server中怎么得到自動(dòng)編號字段解析
- SQL Server 2005 CE軟件環(huán)境需求
- SQL Server數(shù)據(jù)庫備份和恢復(fù)說明
- 解答SQL Server日志文件損壞嚴(yán)重的問題
- 怎樣用SQL Server事件探查器創(chuàng)建跟蹤
- 詳解SQL Server 2008中的聯(lián)機(jī)事務(wù)處理
猜你也喜歡看這些
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲過程的介紹
- mysql密碼過期導(dǎo)致連接不上mysql
- MySQL的安全問題從安裝開始說起
- Mysql建表與索引使用規(guī)范詳解
- mysql與mysqli的區(qū)別與用法
- MYSQL索引無效和索引有效的詳細(xì)介紹
- 解決sql server 2005 express中sa不能登錄
- mysql常用設(shè)置:字符集編碼、自動(dòng)完成(自動(dòng)提示)、監(jiān)聽外網(wǎng)ip
- jdbc調(diào)用mysql存儲過程實(shí)現(xiàn)代碼
- mysql 定時(shí)更新表字段列的值狀態(tài)
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-解讀SQL存儲過程入門級教程
。