第一篇:教學(xué):數(shù)據(jù)庫(kù)-存儲(chǔ)過(guò)程資料
教學(xué)三:存儲(chǔ)過(guò)程
一、教學(xué)目的
(1)掌握T-SQL流控制語(yǔ)句;(2)掌握創(chuàng)建存儲(chǔ)過(guò)程的方法;(3)掌握存儲(chǔ)過(guò)程的執(zhí)行方法;(4)掌握存儲(chǔ)過(guò)程的管理和維護(hù)。
二、教學(xué)內(nèi)容
1、創(chuàng)建簡(jiǎn)單存儲(chǔ)過(guò)程
(1)創(chuàng)建一個(gè)名為stu_pr的存儲(chǔ)過(guò)程,該存儲(chǔ)過(guò)程能查詢(xún)出051班學(xué)生的所有資料,包括學(xué)生的基本信息、學(xué)生的選課信息(含未選課同學(xué)的信息)。要求在創(chuàng)建存儲(chǔ)過(guò)程前請(qǐng)判斷該存儲(chǔ)過(guò)程是否已創(chuàng)建,若已創(chuàng)建則先刪除,并給出“已刪除!”信息,否則就給出“不存在,可創(chuàng)建!”的信息。
if exists(select name from sysobjects where name='stu_pr'and type='p')begin print '已刪除!' drop procedure stu_pr end else print '不存在,可創(chuàng)建!' go create procedure stu_pr as select * from Student_20103322 left outer join SC_20103322
on(Student_20103322.Sno=SC_20103322.Sno)left outer join Course_20103322 on(Course_20103322.Cno=SC_20103322.Cno)where classno='051' 1
exec stu_pr
2、創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程
(1)創(chuàng)建一個(gè)名為stu_proc1的存儲(chǔ)過(guò)程,查詢(xún)某系、某姓名的學(xué)生的學(xué)號(hào)、姓名、年齡,選修課程名、成績(jī)。系名和姓名在調(diào)用該存儲(chǔ)過(guò)程時(shí)輸入,其默認(rèn)值分別為“%”與“林%”。執(zhí)行該存儲(chǔ)過(guò)程,用多種參數(shù)加以測(cè)試。
if exists(select name from sysobjects where name='stu_proc1' and type='p')begin
print '已刪除!' drop procedure stu_proc1 end else
print '不存在,可創(chuàng)建!' go create procedure stu_proc1 @Sdept char(8)='%',@Sname varchar(8)='林%' as select Sdept,Student_20103322.Sno,Sname,DATEDIFF(YEAR,Birth,GETDATE())age,Cname,Grade from Student_20103322,SC_20103322,Course_20103322 where Student_20103322.Sno=SC_20103322.Sno and Course_20103322.Cno=SC_20103322.Cno and Sdept like @Sdept and Sname like @Sname
execute stu_proc1 '計(jì)算機(jī)系','林紅' 3
execute stu_proc1 '信息安全','胡光璟'
(2)創(chuàng)建一個(gè)名為Student_sc的存儲(chǔ)過(guò)程,可查詢(xún)出某段學(xué)號(hào)的同學(xué)的學(xué)號(hào)、姓名、總成績(jī)。(學(xué)號(hào)起始號(hào)與終止號(hào)在調(diào)用時(shí)輸入,可設(shè)默認(rèn)值)。執(zhí)行該存儲(chǔ)過(guò)程。if exists(select name from sysobjects where name='Student_sc'and type='p')begin print '已刪除!' drop procedure student_sc end else print '不存在,可創(chuàng)建!' go create procedure Student_sc @Sno1 char(8),@Sno2 char(8)as select Student_20103322.Sno,Sname,SUM(Grade)總成績(jī) from Student_20103322,SC_20103322,Course_20103322 where Student_20103322.Sno=SC_20103322.Sno and Course_20103322.Cno=SC_20103322.Cno and Student_20103322.Sno>=@Sno1 and Student_20103322.Sno<=@Sno2 group by Student_20103322.Sno,Sname
execute Student_sc '20110000','20110003' 5
3、創(chuàng)建帶輸出參數(shù)的存儲(chǔ)過(guò)程
(1)創(chuàng)建一個(gè)名為Course_sum的存儲(chǔ)過(guò)程,可查詢(xún)某門(mén)課程考試的總成績(jī)??偝煽?jī)可以輸出,以便進(jìn)一步調(diào)用。
if exists(select name from sysobjects where name='Course_sum'and type='p')begin print '已刪除!' drop procedure Course_sum end else print '不存在,可創(chuàng)建!' go create procedure Course_sum @Cname varchar(20),@sum int output as select @sum=sum(Grade)from SC_20103322,Course_20103322 where Course_20103322.Cno=SC_20103322.Cno and Cname=@Cname
group by SC_20103322.Cno,Cname
declare @ping int exec Course_sum '高數(shù)',@ping output print '高數(shù)的考試總成績(jī)?yōu)椋?+cast(@ping as varchar(20))
(2)創(chuàng)建一執(zhí)行該存儲(chǔ)過(guò)程的批處理,要求當(dāng)總成績(jī)小于100時(shí),顯示信息為:“XX課程的總成績(jī)?yōu)椋篨X,其總分未達(dá)100分”。超過(guò)100時(shí),顯示信息為:“XX課程的總成績(jī)?yōu)椋篨X”。
declare @sum int
declare @Cname varchar(20)Exec Course_sum @cname,@sum out begin
if @sum <100 print cast(@cname as varchar)+'課程的總成績(jī)?yōu)?'+cast(@sum as varchar)+ ',其總分未達(dá)分'
else
print cast(@cname as varchar)+'課程的總成績(jī)?yōu)?'+cast(@sum as varchar)end
declare @sum int
declare @Cname varchar(20)set @Cname='高數(shù)' Exec Course_sum @cname,@sum out begin
if @sum <100 print cast(@cname as varchar)+'課程的總成績(jī)?yōu)?'+cast(@sum as varchar)+ ',其總分未達(dá)分'
else
print cast(@cname as varchar)+'課程的總成績(jī)?yōu)?'+cast(@sum as varchar)end
4、創(chuàng)建帶重編譯及加密選項(xiàng)的存儲(chǔ)過(guò)程
創(chuàng)建一個(gè)名為update_sc、并帶重編譯及加密選項(xiàng)的存儲(chǔ)過(guò)程,可更新指定學(xué)號(hào)、指定課程號(hào)的學(xué)生的課程成績(jī)。(學(xué)號(hào)、課程號(hào)由調(diào)用時(shí)輸入)
if exists(select name from sysobjects where name='update_sc'and type='p')begin print '已刪除!' drop procedure update_sc end else print '不存在,可創(chuàng)建!' go create procedure update_sc
@sno char(8),@cno char(3),@grade tinyint with RECOMPILE , ENCRYPTION as update SC_20103322 set Grade=@grade
where Sno=@sno and Cno=@cno
declare @sno char(8),@cno char(3),@grade tinyint set @sno='20103322' set @cno='003' set @grade='100' exec update_sc @sno,@cno,@grade begin print cast(@sno as varchar)+'的'+cast(@cno as varchar)+'課程成績(jī)?yōu)椋?+cast(@grade as varchar)end
5、使用T-SQL語(yǔ)句管理和維護(hù)存儲(chǔ)過(guò)程
(1)使用sp_helptext查看存儲(chǔ)過(guò)程Student_sc的定義腳本
exec sp_helptext student_sc
(2)使用select語(yǔ)句查看Student_sc存儲(chǔ)過(guò)程的定義腳本(提示:通過(guò)查詢(xún)表sysobjects和表syscomments)
select *
from sysobjects,syscomments where name = 'Student_sc'
(3)將存儲(chǔ)過(guò)程stu_pr改為查詢(xún)學(xué)號(hào)為2011001的學(xué)生的詳細(xì)資料。
alter procedure stu_pr as select * from Student_20103322 left outer join SC_20103322 on(Student_20103322.Sno=SC_20103322.Sno)left outer join Course_20103322 on(Course_20103322.Cno=SC_20103322.Cno)where Student_20103322.Sno='2011001'
(4)刪除存儲(chǔ)過(guò)程stu_pr。
drop procedure stu_pr
6、使用SQL Server Management Studio管理存儲(chǔ)過(guò)程
(1)在SQL Server Management Studio中重新創(chuàng)建剛刪除的存儲(chǔ)過(guò)程stu_pr create procedure stu_pr as begin select * from Student_20103322 left outer join SC_20103322 on(Student_20103322.Sno=SC_20103322.Sno)left outer join Course_20103322 on(Course_20103322.Cno=SC_20103322.Cno)where Student_20103322.Sno='2011001' end
(2)查看存儲(chǔ)過(guò)程stu_pr,并將該過(guò)程修改為查詢(xún)051班女生的所有資料。
ALTER procedure [dbo].[stu_pr] as begin select * from Student_20103322 left outer join SC_20103322 on(Student_20103322.Sno=SC_20103322.Sno)left outer join Course_20103322 on(Course_20103322.Cno=SC_20103322.Cno)where Student_20103322.Sno='2011001' and Sex='女' end
(3)刪除存儲(chǔ)過(guò)程stu_pr
【完】
第二篇:網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿(存儲(chǔ)過(guò)程)
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
4/15/2013
存儲(chǔ)過(guò)程
P177
一、什么是存儲(chǔ)過(guò)程
1.是一個(gè)過(guò)程,與其它語(yǔ)言中的過(guò)程幾乎完全相同。它們可以接收參數(shù)、輸出參數(shù)、返回單個(gè)或多個(gè)結(jié)果集以及返回值。2.存儲(chǔ)在服務(wù)器上的數(shù)據(jù)庫(kù)中,創(chuàng)建時(shí)進(jìn)行編譯。3.在后臺(tái)運(yùn)行,其主要功能是對(duì)數(shù)據(jù)庫(kù)操作。4.可以在一個(gè)存儲(chǔ)過(guò)程內(nèi)調(diào)用其它存儲(chǔ)過(guò)程。
二、.存儲(chǔ)過(guò)程的分類(lèi)
分為三類(lèi):用戶(hù)自定義存儲(chǔ)過(guò)程(普通存儲(chǔ)過(guò)程),擴(kuò)展存儲(chǔ)過(guò)程,系統(tǒng)存儲(chǔ)過(guò)程。
三、創(chuàng)建普通存儲(chǔ)過(guò)程
CREATE PROCEDURE命令 例: 1.CREATE PROCEDURE 檢索 @XH CHAR(6)AS SELECT * FROM 成績(jī) WHERE 學(xué)號(hào)=@XH 2.在成績(jī)表中添加一條記錄,如果成績(jī)及格,還要在學(xué)生表中增加學(xué)分。
CREATE PROCEDURE 輸入考試分?jǐn)?shù)
@XH CHAR(6),@KCH CHAR(8),@FS DECIMAL(4,1)AS IF EXISTS(SELECT * FROM 學(xué)生 WHERE 學(xué)號(hào)=@XH)BEGIN
INSERT 成績(jī) VALUES(@XH,@KCH,@FS)
IF @FS>=60
UPDATE 學(xué)生 SET 已修學(xué)分
=已修學(xué)分+(SELECT 學(xué)分 FROM 課程 WHERE 課程編號(hào)=@KCH)
WHERE 學(xué)號(hào)=@XH END ELSE PRINT '無(wú)此學(xué)號(hào)'+@XH
3.在成績(jī)表中刪除指定學(xué)號(hào)和課程的記錄,如果所刪的分?jǐn)?shù)及格,還要在學(xué)生表中減去對(duì)應(yīng)的學(xué)分。CREATE PROCEDURE 刪除考試分?jǐn)?shù)
@XH CHAR(6),@KCH CHAR(8)AS DECLARE @FS DECIMAL(4,1)SET @FS=(SELECT MAX(分?jǐn)?shù))FROM 成績(jī)
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
4/15/2013 WHERE 學(xué)號(hào)=@XH AND 課程編號(hào)=@KCH)IF @FS>0 DELETE FROM 成績(jī) WHERE 學(xué)號(hào)=@XH AND 課程編號(hào)=@KCH IF @FS>=60 UPDATE 學(xué)生 SET 已修學(xué)分
=已修學(xué)分-(SELECT 學(xué)分 FROM 課程 WHERE 課程編號(hào)=@KCH)
WHERE 學(xué)號(hào)=@XH
四、執(zhí)行存儲(chǔ)過(guò)程
P183 例: EXECUTE 檢索 '200202' 檢索 '200202' INSERT 成績(jī)0 EXECUTE 檢索 '200202' EXECUTE 輸入考試分?jǐn)?shù) '200209','W2020610',56 EXECUTE 輸入考試分?jǐn)?shù) '200209','W2020610',88 EXECUTE 輸入考試分?jǐn)?shù) '200209','L2030506',90 如果執(zhí)行存儲(chǔ)過(guò)程是批處理中的第一條語(yǔ)句,則可以省略EXEC。
五、參數(shù)
P185 1.輸入?yún)?shù) 按位置傳遞 用參數(shù)名傳遞 使用默認(rèn)值
2.輸出參數(shù)
P187 虛參和實(shí)參后邊都要加上OUTPUT。例P187: CREATE PROC 班級(jí)人數(shù)@N INT OUTPUT,@CID CHAR(6)='200201' AS SELECT @N=COUNT(*)FROM 學(xué)生WHERE 班級(jí)=@CID
DECLARE @M INT EXEC 班級(jí)人數(shù)@M OUTPUT,'200208' SELECT @M
DECLARE @M INT EXEC 班級(jí)人數(shù)@M OUTPUT SELECT @M
六、查看存儲(chǔ)過(guò)程信息
select * from sys.sql_modules SELECT OBJECT_DEFINITION(OBJECT_ID('檢索'))
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
4/15/2013 sp_helptext 檢索
七、修改存儲(chǔ)過(guò)程
八、刪除存儲(chǔ)過(guò)程
1.在對(duì)象資源管理器或查詢(xún)窗口中刪除 2.用命令DROP PROCEDURE刪除。
第三篇:sql 數(shù)據(jù)庫(kù) 實(shí)驗(yàn)九:T-SQL語(yǔ)言、存儲(chǔ)過(guò)程及數(shù)據(jù)庫(kù)的安全性
實(shí)驗(yàn)九:T-SQL語(yǔ)言、存儲(chǔ)過(guò)程及數(shù)據(jù)庫(kù)的安全性
一、實(shí)驗(yàn)?zāi)康?.掌握數(shù)據(jù)變量的使用;
2.掌握各種控制語(yǔ)句及系統(tǒng)函數(shù)的使用;
3.掌握存儲(chǔ)過(guò)程的實(shí)現(xiàn);
4.掌握混合模式下數(shù)據(jù)庫(kù)用戶(hù)帳號(hào)的建立與取消方法;
5.掌握數(shù)據(jù)庫(kù)用戶(hù)權(quán)限的設(shè)置方法;
6.掌握在企業(yè)管理器中進(jìn)行備份、恢復(fù)操作的步驟;
二、實(shí)驗(yàn)學(xué)時(shí)
2學(xué)時(shí)
三、實(shí)驗(yàn)要求
1.了解T-SQL支持的各種基本數(shù)據(jù)類(lèi)型及變量的使用;
2.了解T-SQL各種運(yùn)算符、控制語(yǔ)句及函數(shù)的功能及使用方法;
3.掌握存儲(chǔ)過(guò)程的編寫(xiě)和運(yùn)行方法
4.熟悉數(shù)據(jù)庫(kù)完全備份及恢復(fù)的方法;
5.了解SQL Server 2008系統(tǒng)安全;
6.熟悉數(shù)據(jù)庫(kù)用戶(hù)、服務(wù)器角色及數(shù)據(jù)庫(kù)角色的用法
7.完成實(shí)驗(yàn)報(bào)告。
四、實(shí)驗(yàn)內(nèi)容
以student數(shù)據(jù)庫(kù)為基礎(chǔ)數(shù)據(jù),完成以下內(nèi)容
1.變量及函數(shù)的使用:
1)創(chuàng)建局部變量@xh(學(xué)號(hào))并賦值,然后輸出數(shù)據(jù)表student中所有等于該值的學(xué)生的學(xué)號(hào)、姓名、性別、所屬院系及年齡等信息;
2)將學(xué)號(hào)為200515008的學(xué)生的姓名賦值給變量@name;
3)計(jì)算學(xué)生信息表student中學(xué)生最高年齡和最低年齡之差,并將結(jié)果付給@cz;
4)定義一函數(shù),按系別統(tǒng)計(jì)當(dāng)前所有學(xué)生的平均年齡,并調(diào)用該函數(shù)。
5)定義一函數(shù),通過(guò)姓名查詢(xún)某學(xué)生的學(xué)號(hào)、性別、年齡、系別、選修課程名及成績(jī)。
2.編寫(xiě)并執(zhí)行存儲(chǔ)過(guò)程
(1)創(chuàng)建一個(gè)無(wú)參存儲(chǔ)過(guò)程pr_StuScore,查詢(xún)以下信息:班級(jí)、學(xué)號(hào)、姓名、性別、課程名稱(chēng)、考試成績(jī)。
(2)創(chuàng)建一個(gè)帶參數(shù)的存儲(chǔ)過(guò)程stu_info,該存儲(chǔ)過(guò)程根據(jù)傳入的學(xué)生編號(hào)在student表中查詢(xún)此學(xué)生的選修課程及成績(jī)信息。
(3)創(chuàng)建一個(gè)帶參數(shù)的存儲(chǔ)過(guò)程StuScoreInfo2,該存儲(chǔ)過(guò)程根據(jù)傳入的學(xué)生
編號(hào)和課程名稱(chēng)查詢(xún)以下信息:班級(jí)、學(xué)號(hào)、姓名、性別、課程名稱(chēng)、考試成績(jī)。
(4)編寫(xiě)帶參數(shù)的存儲(chǔ)過(guò)程,根據(jù)傳入的課程名稱(chēng)統(tǒng)計(jì)該課程的平均成績(jī)。
3.*對(duì)數(shù)據(jù)庫(kù)student進(jìn)行完全備份和恢復(fù)操作;
4.*以系統(tǒng)管理員身份登錄到SQL Server服務(wù)器,在SQL Server2008界面中實(shí)現(xiàn)以下操作
1)在當(dāng)前計(jì)算機(jī)中增加一個(gè)用戶(hù)zhang,密碼為secret。使此用戶(hù)通過(guò)windows
模式下登錄SQL Server服務(wù)器,登錄名為zhang;
2)新建以混合模式登錄SQL Server服務(wù)器的用戶(hù)登錄名分別為stu1、stu2和
stu3,登錄密碼為secret,默認(rèn)登錄數(shù)據(jù)庫(kù)為student;
3)在數(shù)據(jù)庫(kù)student中創(chuàng)建用戶(hù)zhang,登錄帳號(hào)為zhang;
4)在數(shù)據(jù)庫(kù)student中創(chuàng)建用戶(hù)stu1、stu2和stu3,登錄帳號(hào)為stu1、stu2
和stu3;
5)給數(shù)據(jù)庫(kù)用戶(hù)zhang賦予創(chuàng)建數(shù)據(jù)表的權(quán)限;
6)給數(shù)據(jù)庫(kù)用戶(hù)stu1賦予對(duì)sc表進(jìn)行插入、修改、刪除操作權(quán)限;
7)給數(shù)據(jù)庫(kù)用戶(hù)stu2和stu3賦予對(duì)student表、course表所有操作權(quán)限及查
詢(xún)sc的操作權(quán)限,并允許再授權(quán)給其他用戶(hù);
8)撤銷(xiāo)數(shù)據(jù)庫(kù)用戶(hù)stu2對(duì)student表和course表的刪除操作的權(quán)限;
五、實(shí)驗(yàn)步驟
3.對(duì)數(shù)據(jù)庫(kù)student進(jìn)行完全備份和恢復(fù)操作;
1)對(duì)數(shù)據(jù)庫(kù)student進(jìn)行完全備份操作;
以管理員賬號(hào)登錄SQL Server并運(yùn)行SQL Server資源管理器;以下方法任選其一
方法1:利用資源管理器進(jìn)行備份
(1)打開(kāi)【對(duì)象資源管理器】,在【服務(wù)器對(duì)象】節(jié)點(diǎn)下找到【備份設(shè)備】節(jié)點(diǎn),單擊鼠標(biāo)右鍵,彈出右鍵菜單,選擇【新建備份設(shè)備】菜單,彈出新建備份設(shè)備窗口。輸入備份設(shè)備邏輯名稱(chēng)data_backup,并指定備份設(shè)備的物理路徑,例如“D:backupdata_full.bak”,單擊【確定】。
(2)連接到相應(yīng)的SQL Server服務(wù)器實(shí)例之后,在【對(duì)象資源管理器】中,單擊服務(wù)器名稱(chēng)以展開(kāi)服務(wù)器樹(shù)。找到【數(shù)據(jù)庫(kù)】節(jié)點(diǎn)展開(kāi),選擇STUDENT
數(shù)據(jù)庫(kù),單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【任務(wù)】—>【備份】命令。
(3)在【備份數(shù)據(jù)庫(kù)】對(duì)話(huà)框中的【數(shù)據(jù)庫(kù)】下拉列表中選擇的數(shù)據(jù)庫(kù)名STUDENT。在【備份類(lèi)型】下拉列表中選擇備份類(lèi)型為“完整”,在【名稱(chēng)】文本框中輸入備份集的名稱(chēng)STUDENT_BAK,在【備份集過(guò)期時(shí)間】選項(xiàng)中指定備份集過(guò)期時(shí)間為30天,在“選擇頁(yè)”窗格中,單擊【選項(xiàng)】,在【可靠性】選項(xiàng)中選擇“完成后驗(yàn)證備份”選項(xiàng),最后單擊【確定】按鈕。
方法2:用T-SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)完全備份
使用邏輯名STUDENTBAK創(chuàng)建一個(gè)命名的備份設(shè)備,并將數(shù)據(jù)庫(kù)STUDENT完全備份到該設(shè)備。在查詢(xún)分析器的窗口輸入如下的語(yǔ)句并執(zhí)行:
USE master
EXEC sp_addumpdevice ‘disk’,’ STUDENTBAK’,’D:backup STUDENTBAK.BAK’
BackUp DataBase STUDENT To STUDENTBAK
2)在資源管理器中進(jìn)行數(shù)據(jù)庫(kù)恢復(fù);
(1)展開(kāi)【數(shù)據(jù)庫(kù)】節(jié)點(diǎn),用鼠標(biāo)右鍵單擊STUDENT,在彈出的快捷菜單中選擇【屬性】命令。打開(kāi)“數(shù)據(jù)庫(kù)屬性”對(duì)話(huà)框,在“選擇頁(yè)”列表中,單擊“選項(xiàng)”。在“恢復(fù)模式”下拉列表中選擇【完整】恢復(fù)模式。
(2)用鼠標(biāo)右鍵單擊STUDENT,在彈出的快捷菜單中選擇【任務(wù)】—>【還原】—>【數(shù)據(jù)庫(kù)】命令。打開(kāi)“還原數(shù)據(jù)庫(kù)”對(duì)話(huà)框。在“常規(guī)”選項(xiàng)卡上,“目標(biāo)數(shù)據(jù)庫(kù)”下拉列表框中選擇STUDENT。在“目標(biāo)時(shí)間點(diǎn)”文本框中,使用默認(rèn)值“最近狀態(tài)”。在“選擇用于還原的備份集”表格中,選擇用于還原的備份,單擊“確定”按鈕。
4.*以系統(tǒng)管理員身份登錄到SQL Server服務(wù)器,在SQL Server2008界面中實(shí)現(xiàn)以下操作
1)在當(dāng)前計(jì)算機(jī)中增加一個(gè)用戶(hù)zhang,密碼為secret。使此用戶(hù)通過(guò)windows
模式下登錄SQL Server服務(wù)器,登錄名為zhang; 在計(jì)算機(jī)中增加用戶(hù)的方法如下:?jiǎn)螕簟鹃_(kāi)始|管理工具】,選擇【計(jì)算機(jī)管理】,在【計(jì)算機(jī)管理】的窗口中單擊左邊的【本地用戶(hù)和組】,在右側(cè)【用戶(hù)】文件夾上單擊右鍵,選擇菜單上的【新用戶(hù)】,然后在彈出的【新用戶(hù)】對(duì)話(huà)框中鍵入您準(zhǔn)備使用的用戶(hù)名、密碼,然后清除【用戶(hù)下次登錄時(shí)須更改密碼】復(fù)選框的選中狀態(tài),再單擊【創(chuàng)建】按鈕,然后單擊【關(guān)閉】按鈕關(guān)閉對(duì)話(huà)框。
創(chuàng)建windows身份驗(yàn)證登陸用戶(hù)方法:在【對(duì)象資源管理器】中,展開(kāi)【安全性】節(jié)點(diǎn),然后右鍵單擊【登錄名】,在彈出的快捷菜單中選擇【新建登錄名】。在“登錄名-新建”對(duì)話(huà)框中單擊【登錄名】后面的搜索按鈕,選擇
【高級(jí)】,在彈出的對(duì)話(huà)框中選擇【立即查找】,在搜索結(jié)果中選擇已經(jīng)建立的用戶(hù)名,單擊【確定】按鈕,回到“登錄名-新建”對(duì)話(huà)框中,最后單擊確定按鈕完成創(chuàng)建。
2)新建以混合模式登錄SQL Server服務(wù)器的用戶(hù)登錄名分別為stu1、stu2和
stu3,登錄密碼為secret,默認(rèn)登錄數(shù)據(jù)庫(kù)為student;
創(chuàng)建SQL Server身份驗(yàn)證登陸用戶(hù)方法:在【對(duì)象資源管理器】中,展開(kāi)
【安全性】節(jié)點(diǎn),然后右鍵單擊【登錄名】,在彈出的快捷菜單中選擇【新建登錄名】。在“登錄名-新建”對(duì)話(huà)框中選擇SQL Server身份驗(yàn)證選項(xiàng),在【登錄名】后面輸入用戶(hù)名,在密碼及確認(rèn)密碼后面輸入密碼。取消【強(qiáng)制密碼過(guò)期】選項(xiàng),單擊【確定】按鈕。
3)在數(shù)據(jù)庫(kù)student中創(chuàng)建用戶(hù)zhang,登錄帳號(hào)為zhang;
在【對(duì)象資源管理器】中展開(kāi)student數(shù)據(jù)庫(kù)節(jié)點(diǎn),展開(kāi)【安全性】節(jié)點(diǎn),在用戶(hù)上單擊鼠標(biāo)右鍵選擇【新建用戶(hù)】命令,在彈出的新建對(duì)話(huà)框中單擊
【登陸名】后面的搜索按鈕,在彈出的【選擇登錄名】對(duì)話(huà)框中單擊【瀏覽】按鈕,在相應(yīng)的賬號(hào)前面選中并單擊【確定】按鈕,最后在用戶(hù)名后面輸入用戶(hù)名稱(chēng),單擊【確定】按鈕完成創(chuàng)建。
CREATEUSERzhang for login zhang
4)在數(shù)據(jù)庫(kù)student中創(chuàng)建用戶(hù)stu1、stu2和stu3,登錄帳號(hào)為stu1、stu2
和stu3;
CREATEUSERstu1 for login stu1
5)給數(shù)據(jù)庫(kù)用戶(hù)zhang賦予創(chuàng)建數(shù)據(jù)表的權(quán)限;
在student數(shù)據(jù)庫(kù)安全性節(jié)點(diǎn)下的用戶(hù)名上單擊鼠標(biāo)右鍵,選擇【屬性】,在打開(kāi)的對(duì)話(huà)框中選擇【安全對(duì)象】頁(yè),單擊右邊的【搜索】按鈕,在彈出的【添加對(duì)象】對(duì)話(huà)框中直接單擊【確定】按鈕,然后單擊【對(duì)象類(lèi)型】按鈕,彈出【選擇對(duì)象類(lèi)型】對(duì)話(huà)框,選中【數(shù)據(jù)庫(kù)】,單擊【確定】按鈕。再在選擇對(duì)象對(duì)話(huà)框中單擊【瀏覽】,在student數(shù)據(jù)庫(kù)前面選中,單擊【確定】。最后在【安全對(duì)象】頁(yè)下方的student的權(quán)限中創(chuàng)建表選項(xiàng)后的【授予】復(fù)選框中選中,單擊【確定】完成設(shè)置。
GRANTcreatetabletozhang
6)給數(shù)據(jù)庫(kù)用戶(hù)stu1賦予對(duì)sc表進(jìn)行插入、修改、刪除操作權(quán)限;
GRANT insert,update,delete ONsc to stu
17)給數(shù)據(jù)庫(kù)用戶(hù)stu2和stu3賦予對(duì)student表、course表所有操作權(quán)限及查
詢(xún)sc的操作權(quán)限,并允許再授權(quán)給其他用戶(hù);
GRANTALL PRIVILEGESONStudent,CourseTOstu2,stu3
WITH GRANT OPTION
8)撤銷(xiāo)數(shù)據(jù)庫(kù)用戶(hù)stu2對(duì)student表和course表的刪除操作的權(quán)限;
RevokedeleteON Student,CourseFROM stu2 CASCADE
第四篇:mysql 5.0存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)
mysql 5.0存儲(chǔ)過(guò)程學(xué)習(xí)總結(jié)
一.創(chuàng)建存儲(chǔ)過(guò)程 1.基本語(yǔ)法:
create procedure sp_name()begin end 2.參數(shù)傳遞
二.調(diào)用存儲(chǔ)過(guò)程
1.基本語(yǔ)法:call sp_name()注意:存儲(chǔ)過(guò)程名稱(chēng)后面必須加括號(hào),哪怕該存儲(chǔ)過(guò)程沒(méi)有參數(shù)傳遞
三.刪除存儲(chǔ)過(guò)程 1.基本語(yǔ)法:
drop procedure sp_name// 2.注意事項(xiàng)
(1)不能在一個(gè)存儲(chǔ)過(guò)程中刪除另一個(gè)存儲(chǔ)過(guò)程,只能調(diào)用另一個(gè)存儲(chǔ)過(guò)程
四.區(qū)塊,條件,循環(huán) 1.區(qū)塊定義,常用 begin end;也可以給區(qū)塊起別名,如: lable:begin end lable;可以用leave lable;跳出區(qū)塊,執(zhí)行區(qū)塊以后的代碼
2.條件語(yǔ)句 3.循環(huán)語(yǔ)句 :while循環(huán) loop循環(huán) repeat until循環(huán) repeat until循環(huán)
五.其他常用命令
1.show procedure status 顯示數(shù)據(jù)庫(kù)中所有存儲(chǔ)的存儲(chǔ)過(guò)程基本信息,包括所屬數(shù)據(jù)庫(kù),存儲(chǔ)過(guò)程名稱(chēng),創(chuàng)建時(shí)間等 2.show create procedure sp_name 顯示某一個(gè)存儲(chǔ)過(guò)程的詳細(xì)信息
mysql存儲(chǔ)過(guò)程基本函數(shù)
一.字符串類(lèi)
CHARSET(str)//返回字串字符集 CONCAT(string2 [,...])//連接字串
INSTR(string ,substring)//返回substring首次在string中出現(xiàn)的位置,不存在返回0 LCASE(string2)//轉(zhuǎn)換成小寫(xiě)
LEFT(string2 ,length)//從string2中的左邊起取length個(gè)字符 LENGTH(string)//string長(zhǎng)度
一起推論壇
一起推論壇004km.cn
第五篇:課題:SQLServer存儲(chǔ)過(guò)程返回值總結(jié)
SQLServer存儲(chǔ)過(guò)程返回值總結(jié)
1.存儲(chǔ)過(guò)程沒(méi)有返回值的情況(即存儲(chǔ)過(guò)程語(yǔ)句中沒(méi)有return之類(lèi)的語(yǔ)句)
用方法 int count = ExecuteNonQuery(..)執(zhí)行存儲(chǔ)過(guò)程其返回值只有兩種情況
(1)假如通過(guò)查詢(xún)分析器執(zhí)行該存儲(chǔ)過(guò)程,在顯示欄中假如有影響的行數(shù),則影響幾行count就是幾
(2)假如通過(guò)查詢(xún)分析器執(zhí)行該存儲(chǔ)過(guò)程,在顯示欄中假如顯示'命令已成功完成。'則count =-1;在顯示欄中假如有查詢(xún)結(jié)果,則count =-1
總結(jié):A.ExecuteNonQuery()該方法只返回影響的行數(shù),假如沒(méi)有影響行數(shù),則該方法的返回值只能是-1,不會(huì)為0。
B.不論ExecuteNonQuery()方法是按照CommandType.StoredProcedure或者CommandType.Text執(zhí)行,其效果和A一樣。
2.獲得存儲(chǔ)過(guò)程的返回值--通過(guò)查詢(xún)分析器獲得
(1)不帶任何參數(shù)的存儲(chǔ)過(guò)程(存儲(chǔ)過(guò)程語(yǔ)句中含有return)
---創(chuàng)建存儲(chǔ)過(guò)程
CREATE PROCEDURE testReturn
AS
return 145
GO
---執(zhí)行存儲(chǔ)過(guò)程
DECLARE @RC int
exec @RC=testReturn
select @RC
---說(shuō)明
查詢(xún)結(jié)果為145
(2)帶輸入?yún)?shù)的存儲(chǔ)過(guò)程(存儲(chǔ)過(guò)程語(yǔ)句中含有return)
---創(chuàng)建存儲(chǔ)過(guò)程
create procedure sp_add_table1
@in_name varchar(100), @in_addr varchar(100), @in_tel varchar(100)
as
if(@in_name = '' or @in_name is null)
return 1
else
begin
insert into table1(name,addr,tel)values(@in_name,@in_addr,@in_tel)
return 0
end
---執(zhí)行存儲(chǔ)過(guò)程
<1>執(zhí)行下列,返回1
declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count
<2>執(zhí)行下列,返回0
declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count
---說(shuō)明
查詢(xún)結(jié)果不是0就是1
(3)帶輸出參數(shù)的存儲(chǔ)過(guò)程(存儲(chǔ)過(guò)程中可以有return可以沒(méi)有return)
例子A:
---創(chuàng)建存儲(chǔ)過(guò)程
create procedure sp_output
@output int output
as
set @output = 121
return 1
---執(zhí)行存儲(chǔ)過(guò)程
<1>執(zhí)行下列,返回121
declare @out int
exec sp_output @out output
select @out
<2>執(zhí)行下列,返回1
declare @out int
declare @count int exec @count = sp_output @out output
select @count
---說(shuō)明
有return,只要查詢(xún)輸出參數(shù),則查詢(xún)結(jié)果為輸出參數(shù)在存儲(chǔ)過(guò)程中最后變成的值;只要不查詢(xún)輸出參數(shù),則查詢(xún)結(jié)果為return返回的值
例子B:
---創(chuàng)建存儲(chǔ)過(guò)程
create procedure sp_output
@output int output
as
set @output = 121
---執(zhí)行存儲(chǔ)過(guò)程
<1>執(zhí)行下列,返回121
declare @out int
exec sp_output @out output
select @out
<2>執(zhí)行下列,返回0
declare @out int
declare @count int
exec @count = sp_output @out output
select @count
---說(shuō)明
沒(méi)有return,只要查詢(xún)輸出參數(shù),則查詢(xún)結(jié)果為輸出參數(shù)在存儲(chǔ)過(guò)程中最后變成的值;只要不查詢(xún)輸出參數(shù),則查詢(xún)結(jié)果為0
總結(jié):
(1)存儲(chǔ)過(guò)程共分為3類(lèi):
A.返回記錄集的存儲(chǔ)過(guò)程---------------------------其執(zhí)行結(jié)果是一個(gè)記錄集,例如:從數(shù)據(jù)庫(kù)中檢索出符合某一個(gè)或幾個(gè)條件的記錄
B.返回?cái)?shù)值的存儲(chǔ)過(guò)程(也可以稱(chēng)為標(biāo)量存儲(chǔ)過(guò)程)-----其執(zhí)行完以后返回一個(gè)值,例如:在數(shù)據(jù)庫(kù)中執(zhí)行一個(gè)有返回值的函數(shù)或命令
C.行為存儲(chǔ)過(guò)程----用來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的某個(gè)功能,而沒(méi)有返回值,例如:在數(shù)據(jù)庫(kù)中的更新和刪除操作
(2)含有return的存儲(chǔ)過(guò)程其返回值為return返回的那個(gè)值
(3)沒(méi)有return的存儲(chǔ)過(guò)程,不論執(zhí)行結(jié)果有無(wú)記錄集,其返回值是0
(4)帶輸出參數(shù)的存儲(chǔ)過(guò)程:假如有return則返回return返回的那個(gè)值,假如要select輸出參數(shù),則出現(xiàn)輸出參數(shù)的值,于有無(wú)return無(wú)關(guān)
--------------------3.獲得存儲(chǔ)過(guò)程的返回值--通過(guò)程序獲得
---------------------------SqlParameter[] cmdParms = {..,new SqlParameter(“@return”,SqlDbType.Int)};cmdParms[cmdParms.Length1].Direction = ParameterDirection.Output或者 cmdParms[cmdParms.Length1].Value;
分類(lèi): asp.net