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