關于SQL 存儲過程入門基礎(基礎知識)_Mssql數(shù)據(jù)庫教程
推薦:關于SQL 存儲過程入門基礎(變量)本篇文章,小編將為大家介紹關于SQL 存儲過程入門基礎(變量),有需要的朋友可以參考一下
大學里面對存儲過程沒有講到什么,工作了一段時間,對存儲過程還是沒有用到,根本不需要去寫存儲過程,可能是做的軟件方向的原因吧。為了以后發(fā)展,決定從零開始學習下。
這里看看存儲過程的定義,
存儲過程(Stored Procedure),是一組為了完成特定功能的SQL 語句,集經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶通過指定存儲過程的名字并給出參數(shù),如果該存儲過程帶有參數(shù)來執(zhí)行。
在SQL Server 的系列版本中,存儲過程分為兩類:系統(tǒng)提供的存儲過程和用戶自定義存儲過程。
系統(tǒng)SP,主要存儲master 數(shù)據(jù)庫中,并以sp_為前綴并且系統(tǒng)存儲過程主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理SQL Server。
常用系統(tǒng)存儲過程有:
exec sp_databases; --查看數(shù)據(jù)庫
exec sp_tables; --查看表
exec sp_columns student;--查看列
exec sp_helpIndex student;--查看索引
exec sp_helpConstraint student;--約束
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--查看存儲過程創(chuàng)建、定義語句
exec sp_rename student, stuInfo;--修改表、索引、列的名稱
exec sp_renamedb myTempDB, myDB;--更改數(shù)據(jù)庫名稱
exec sp_defaultdb 'master', 'myDB';--更改登錄名的默認數(shù)據(jù)庫
exec sp_helpdb;--數(shù)據(jù)庫幫助,查詢數(shù)據(jù)庫信息
exec sp_helpdb master;
用戶自定義存儲過程是由用戶創(chuàng)建,并能完成某一特定功能,如:查詢用戶所需數(shù)據(jù)信息的存儲過程。
這里我們看看存儲過程的好處;
(1)重復使用。存儲過程可以重復使用,從而可以減少數(shù)據(jù)庫開發(fā)人員的工作量。
(2)提高性能。存儲過程在創(chuàng)建的時候就進行了編譯,將來使用的時候不用再重新編譯。一般的SQL語句每執(zhí)行一次就需要編譯一次,所以使用存儲過程提高了效率。
(3)減少網(wǎng)絡流量。存儲過程位于服務器上,調(diào)用的時候只需要傳遞存儲過程的名稱以及參數(shù)就可以了,因此降低了網(wǎng)絡傳輸?shù)臄?shù)據(jù)量。
(4)安全性。參數(shù)化的存儲過程可以防止SQL注入式的攻擊,而且可以將Grant、Deny以及Revoke權限應用于存儲過程。
好了,我們來看看創(chuàng)建的基本語法
定義存儲過程的語法
CREATE PROC[EDURE] 存儲過程名
@參數(shù)1 數(shù)據(jù)類型 = 默認值,
…… ,
@參數(shù)n 數(shù)據(jù)類型 OUTPUT
AS
SQL語句
GO
,參數(shù)是可選的
,參數(shù)分為輸入?yún)?shù)、輸出參數(shù)
,輸入?yún)?shù)允許有默認值
這里來創(chuàng)建一個簡單的存儲過程
CREATE PROCEDURE UserLogin
@name varchar(20),
@password varchar(20)
AS
-- 定義一個臨時用來保存密碼的變量
--DECLARE @strPwd NVARCHAR(20) 這里先不介紹變量。稍后的文章會詳細講到
BEGIN
select * from userinfo where userName=@name and userPass=@password
END
GO
首先我們用簡單的sql查詢
select * from userinfo where userName='admin'
查詢結果:
---------------------
UserName UserPass
Admin Admin
現(xiàn)在我們來執(zhí)行我們的存儲過程
exec UserLogin admin,admin
--或這樣調(diào)用:
EXEC UserLogin @name='admin',@password='admin'
查詢結果:
---------------------
UserName UserPass
Admin Admin
注意,在SQL SERVER中,所有用戶定義的變量都以“@”開頭,OUTPUT關鍵字表示這個參數(shù)是用來輸出的,AS之后就是存儲過程內(nèi)容了。只要將以上代碼在“查詢分析器”里執(zhí)行一次,SQL SERVER就會在當前數(shù)據(jù)庫中創(chuàng)建一個名為“UserLogin”的存儲過程。你可以打開“企業(yè)管理器”,選擇當前操作的數(shù)據(jù)庫,然后在左邊的樹型列表中選擇"可編程性->存儲過程",此時就可以在右邊的列表中看到你剛剛創(chuàng)建的存儲過程了(如果沒有,刷新一下即可)。
看到了在數(shù)據(jù)中調(diào)用存儲過程的方法有兩種(這里EXEC與EXECUTE等效);
EXEC 過程名 參數(shù)值1,參數(shù)值2,....
或者
EXEC 參數(shù)1=參數(shù)值1,參數(shù)2=參數(shù)值2....
上面我們也看到了。
如果要刪除一個存儲過程,用drop
像這樣
drop PROCEDURE UserLogin
創(chuàng)建這樣的存儲過程有什么用呢,不是只能在數(shù)據(jù)中查看賽。
我們在做web或者winform 程序,假設需要個登錄,好,我們可以調(diào)用用這個存儲過程來登錄,根據(jù)傳入的參數(shù),如果查詢出來有記錄,那么這條記錄在數(shù)據(jù)庫中存在,表示登錄成功,否則失敗。
這樣做的目的更加安全,可以防止sql注入。
分享:基于Sql Server通用分頁存儲過程的解決方法本篇文章,小編將為大家介紹基于Sql Server通用分頁存儲過程的解決方法,有需要的朋友可以參考一下
- sql 語句練習與答案
- 深入C++ string.find()函數(shù)的用法總結
- SQL Server中刪除重復數(shù)據(jù)的幾個方法
- sql刪除重復數(shù)據(jù)的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤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ù)的用法實例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 解析SQL Server 2008對T-SQL語言的增強
- 怎樣使用SQL2000將現(xiàn)有代碼作為Web服務提供
- 深入C++ string.find()函數(shù)的用法總結
- 解讀史上最簡單的方法復制或遷移Oracle數(shù)據(jù)庫
- Excel導入數(shù)據(jù)庫時出現(xiàn)的文本截斷問題解決方案
- 淺談SQL Server 2008數(shù)據(jù)挖掘查詢?nèi)蝿?/a>
- AD域中成員服務器SQL 2008 Server安裝配置圖文教程
- 解析關于SQL Server 2008主要功能的6個問題
- 微軟SQL Server 2008之行值構造器
- SQL Server 2008:表值參數(shù)的創(chuàng)建和使用
猜你也喜歡看這些
- MySql大批量導入數(shù)據(jù)優(yōu)化
- mysql常用監(jiān)控腳本命令整理
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- 解析SQL語句中Replace INTO與INSERT INTO的不同之處
- MySql中把一個表的數(shù)據(jù)插入到另一個表中的實現(xiàn)代碼
- 如何用cmd連接Mysql數(shù)據(jù)庫
- 基于unique與primary約束的區(qū)別分析
- 把視頻文件直接存儲到mysql數(shù)據(jù)庫的方法
- SQL Server Management Studio 沒有出來
- MySQL多表之間字段的匹配實現(xiàn)代碼
- 相關鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-關于SQL 存儲過程入門基礎(基礎知識)
。