資源描述:
《sql 存儲過程學(xué)習(xí)總結(jié)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、select*from成績表select*from學(xué)生信息表1存儲過程的定義·存儲過程(procedure)類似于C語言中的函數(shù)·用來執(zhí)行管理任務(wù)或應(yīng)用復(fù)雜的業(yè)務(wù)規(guī)則·存儲過程可以帶參數(shù),也可以返回結(jié)果·存儲過程可以包含數(shù)據(jù)操縱語句、變量、邏輯控制語句等2存儲過程的優(yōu)點·執(zhí)行速度更快·允許模塊化程序設(shè)計·提高系統(tǒng)安全性·減少網(wǎng)絡(luò)流通量3、存儲過程的分類3.1系統(tǒng)存儲過程·由系統(tǒng)定義,存放在master數(shù)據(jù)庫中·類似C語言中的系統(tǒng)函數(shù)·系統(tǒng)存儲過程的名稱都以“sp_”開頭或”xp_”開頭3.2用戶自定義存儲過程·由用戶在自己的數(shù)據(jù)庫中創(chuàng)
2、建的存儲過程·類似C語言中的用戶自定義函數(shù)4、常用的系統(tǒng)存儲過程4.1系統(tǒng)存儲過程列表系統(tǒng)存儲過程說明sp_databases列出服務(wù)器上的所有數(shù)據(jù)庫。sp_helpdb報告有關(guān)指定數(shù)據(jù)庫或所有數(shù)據(jù)庫的信息sp_renamedb更改數(shù)據(jù)庫的名稱sp_tables返回當(dāng)前環(huán)境下可查詢的對象的列表sp_columns回某個表列的信息sp_help查看某個表的所有信息sp_helpconstraint查看某個表的約束sp_helpindex查看某個表的索引sp_stored_procedures列出當(dāng)前環(huán)境中的所有存儲過程。sp_passw
3、ord添加或修改登錄帳戶的密碼。sp_helptext顯示默認(rèn)值、未加密的存儲過程、用戶定義的存儲過程、觸發(fā)器或視圖的實際文本。4.2調(diào)用常用的系統(tǒng)存儲過程EXECsp_databases--列出當(dāng)前系統(tǒng)中的數(shù)據(jù)庫EXECsp_renamedb'Northwind','Northwind1'--修改數(shù)據(jù)庫的名稱(單用戶訪問)USEstuDB--當(dāng)前數(shù)據(jù)庫中查詢的對象的列表GOEXECsp_tables--返回某個表列的信息EXECsp_columnsstuInfo--返回某個表列的信息EXECsp_helpstuInfo--查看表st
4、uInfo的信息EXECsp_helpconstraintstuInfo--查看表stuInfo的約束EXECsp_helpindexstuMarks--查看表stuMarks的索引EXECsp_helptext'view_stuInfo_stuMarks'--查看視圖的語句文本EXECsp_stored_procedures--查看當(dāng)前數(shù)據(jù)庫中的存儲過程4.3調(diào)用常用的擴展存儲過程:xp_cmdshell·可以執(zhí)行DOS命令下的一些的操作,以文本行方式返回任何輸出·調(diào)用語法:EXECxp_cmdshellDOS命令[NO_OUTPU
5、T]【案例分析】創(chuàng)建數(shù)據(jù)庫bankDB,要求保存在D:bankUSEmasterGOEXECxp_cmdshell'mkdird:bank',no_output--創(chuàng)建文件夾D:bankIFEXISTS(SELECT*FROMsysdatabasesWHEREname='bankDB')DROPDATABASEbankDBGOCREATEDATABASEbankDB(…)GO--查看文件夾D:bankEXECxp_cmdshell'dirD:bank'--查看文件5、創(chuàng)建存儲過程5.1定義存儲過程的語法createproc
6、[edure]存儲過程名@參數(shù)數(shù)據(jù)類型=默認(rèn)值output,……,@參數(shù)n數(shù)據(jù)類型=默認(rèn)值outputASSQL語句GO·和C語言的函數(shù)一樣,參數(shù)可選·參數(shù)分為輸入?yún)?shù)、輸出參數(shù)·輸入?yún)?shù)允許有默認(rèn)值5.2創(chuàng)建不帶參數(shù)的存儲過程·【問題】請創(chuàng)建存儲過程,查看本次考試平均分以及未通過考試的學(xué)員名單說明:筆試和機試都通過了60分才算通過。--創(chuàng)建不帶參數(shù)的存儲過程createprocedureproc_stuASdeclare@avgwrifloat,@avglabfloatselect@avgwri=avg(筆試成績),@avglab=
7、avg(上機成績)from成績表--筆試平均分和機試平均分變量print'筆試成績分?jǐn)?shù)='+convert(varchar(10),@avgwri)print'上機成績分?jǐn)?shù)='+convert(varchar(10),@avglab)if@avgwri>70and@avglab>70--顯示考試成績的等級print'本班成績:優(yōu)秀'elseprint'本班成績:較差'--顯示未通過的學(xué)員print'---------------------------'print'參加考試不及格的學(xué)生'selecta.學(xué)生姓名,a.學(xué)號,b.筆試成績
8、,b.上機成績from學(xué)生信息表asainnerjoin成績表asbona.學(xué)號=b.學(xué)號whereb.筆試成績<60orb.上機成績<60GO5.3調(diào)用存儲過程execute(執(zhí)行)語句用來調(diào)用存儲過程調(diào)用的語法:EX