数据库上机实验题(七、八、九).docx
- 文档编号:1723758
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:6
- 大小:20.96KB
数据库上机实验题(七、八、九).docx
《数据库上机实验题(七、八、九).docx》由会员分享,可在线阅读,更多相关《数据库上机实验题(七、八、九).docx(6页珍藏版)》请在冰豆网上搜索。
上机实验题7
相关知识:
第14章。
目的:
通过本实验,掌握使用函数和存储过程的设计和使用方法。
实验内容:
编写满足如下各功能的程序:
(1)在Library数据库中创建一个标量值函数Sum(n),求1+2+…+n之和。
并用相关数据进行测试。
(2)在Library数据库中创建一个内联表值函数nbook,返回指定系的学号、姓名、班号、所借图书名和借书日期。
并用相关数据进行测试。
(3)在Library数据库中创建一个多语句表值函数pbook,返回系名和该系所有学生所借图书的平均价格。
并用相关数据进行测试。
(4)设计一个存储过程,查询每种图书品种的数目。
并用相关数据进行测试。
(5)设计一个存储过程,采用模糊查询方式查找借阅指定书名的学生,输出学号、姓名、班号和书名。
并用相关数据进行测试。
设计过程:
(1)对应的参考程序如下:
USELibrary
GO
IFEXISTS(SELECT*FROMsysobjects
WHEREname='Sum'ANDtype='FN')--如果存在这样的函数则删除之
DROPFUNCTIONSum
GO
CREATEFUNCTIONSum(@nint)--输入参数
RETURNSint
AS
BEGIN
DECLARE@sint,@iint
SET@s=0
SET@i=1
WHILE@i<=@n
BEGIN
SET@s=@s+@i
SET@i=@i+1
END
RETURN(@s)
END
GO
PRINT'1+2+...+60='+CAST(dbo.Sum(60)ASchar(10))
GO
(2)对应的参考程序如下:
USELibrary
GO
IFEXISTS(SELECT*FROMsysobjects--如果存在这样的函数则删除之
WHEREname='nbook'AND(type='IF'ORtype='TF'))
DROPFUNCTIONnbook
GO
CREATEFUNCTIONnbook(@dnamechar(16))--建立函数nbook
RETURNSTABLE --返回表,没有指定表结构,这是内联表值函数的特征
AS
RETURN
(
SELECTs.学号,s.姓名,s.班号,b.图书名,bor.借书日期
FROMstudents,departsc,borrowbor,bookb
WHEREs.班号=sc.班号ANDs.学号=bor.学号ANDb.图书编号=bor.图书编号ANDsc.系名=@dname
)
GO
SELECT*
FROMnbook('计算机系')
ORDERBY学号
GO
(3)对应的参考程序如下:
USELibrary
GO
IFEXISTS(SELECT*FROMsysobjects--如果存在这样的函数则删除之
WHEREname='pbook'AND(type='IF'ORtype='TF'))
DROPFUNCTIONpbook
GO
CREATEFUNCTIONpbook() --建立函数pbook
RETURNS@stTABLE
(
系名char(16),
平均价格decimal(4,1)
)
AS
BEGIN
INSERT@st --向@st中插入满足条件的记录
SELECTsc.系名AS'系名',AVG(b.定价)AS'平均价格'
FROMdepartsc,students,bookb,borrowbor
WHEREs.班号=sc.班号ANDs.学号=bor.学号ANDb.图书编号=bor.图书编号
GROUPBYsc.系名
RETURN
END
GO
SELECT*FROMpbook()
GO
(4)对应的参考程序如下:
USELibrary
GO
--若存在存储过程proc1,则删除之
IFEXISTS(SELECT*FROMsysobjectsWHEREname='proc1'
ANDtype='P')
DROPPROCEDUREproc1
GO
--创建存储过程proc1
CREATEPROCEDUREproc1
AS
SELECT图书名AS'书名',COUNT(*)AS'数目'
FROMbook
GROUPBY图书名
GO
EXECproc1
(5)对应的参考程序如下:
USELibrary
GO
--若存在存储过程proc2,则删除之
IFEXISTS(SELECT*FROMsysobjectsWHEREname='proc2'
ANDtype='P')
DROPPROCEDUREproc2
GO
--创建存储过程proc2
CREATEPROCEDUREproc2(@bnchar(16))
AS
DECLARE@ptchar(16)
SET@pt='%'+RTRIM(@bn)+'%'
SELECTs.学号,s.姓名,s.班号,b.图书名
FROMstudents,bookb,borrowbor
WHEREs.学号=bor.学号ANDb.图书编号=bor.图书编号
ANDb.图书名LIKE@pt
ORDERBYs.班号
GO
EXECproc2'数'
上机实验题8
相关知识:
第15章。
目的:
通过本实验,掌握触发器的设计和使用方法。
实验内容:
编写满足如下各功能的程序:
(1)在borrow上建立一个触发器,完成如下功能:
如果读者借阅的书名是“网络工程”,就将该借书记录保存在borrow1表中(borrow1表结构同borrow相同)。
(2)在borrow上建立一个触发器,完成如下功能:
当删除borrow表中任何记录时,将该记录保存保存在borrow1表中(borrow1表结构同borrow相同)。
(3)删除前面创建的触发器。
设计过程:
(1)对应的参考程序如下:
USELibrary
GO
--若不存在borrow1表,则通过复制创建表borrow1
IFNOTEXISTS(SELECTnameFROMsysobjects
WHEREname='borrow1'ANDtype='U')
BEGIN
SELECT*INTOborrow1FROMborrow
DELETEborrow1
END
GO
CREATETRIGGERtrig1ONborrow
FORINSERT,UPDATE
AS
IF@@ROWCOUNT>0
INSERTborrow1SELECTi.*
FROMinsertedi,bookb
WHEREi.图书编号=b.图书编号ANDb.图书名='网络工程'
GO
INSERTINTOborrowVALUES('11','20090','2014-4-15')
GO
SELECT*FROMborrow1
GO
说明:
在本实验完成后,请将borrow表中新插入的记录删除,仍保持数据不变。
(2)对应的参考程序如下:
USELibrary
GO
IFNOTEXISTS(SELECTnameFROMsysobjects
WHEREname='borrow1'ANDtype='U')
BEGIN
SELECT*INTOborrow1FROMborrow
DELETEborrow1
END
GO
CREATETRIGGERtrig2ONborrow
FORDELETE
AS
IF@@ROWCOUNT>0
INSERTborrow1SELECT*FROMdeleted
GO
(3)对应的参考程序如下:
USELibrary
GO
DROPTRIGGERtrig1
DROPTRIGGERtrig2
GO
上机实验题9
相关知识:
第16章。
目的:
通过本实验,掌握使用T-SQL语句进行SQLServer安全管理的方法。
实验内容:
编写满足如下各功能的程序:
(1)创建一个登录账号liblog,其密码为“123456”。
(2)为liblog登录账号在Library数据库中创建一个数据库用户账号liblog。
(3)将Library数据库中建表的权限授予libuser数据库用户账号,然后收回该权限。
(4)将Library数据库中表student上的INSERT、UPDATE和DELETE权限授予libuser数据库用户账号,然后收回该权限。
(5)删除前面创建的登录账号liblog和数据库用户账号libuser。
设计过程:
(1)对应的参考程序如下:
CREATELOGINliblogWITHPASSWORD='123456'
GO
(2)对应的参考程序如下:
USELibrary
CREATEUSERlibuserFORLOGINliblog
GO
(3)对应的参考程序如下:
USELibrary
GO
GRANTCREATETABLETOlibuser
GO
REVOKECREATETABLEFROMlibuser
GO
(4)对应的参考程序如下:
USELibrary
GO
GRANTINSERT,UPDATE,DELETEONstudentTOlibuser
GO
REVOKEINSERT,UPDATE,DELETEONstudentFROMlibuser
GO
(5)对应的参考程序如下:
DROPLOGINliblog
GO
USELibrary
DROPUSERlibuser
GO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 上机 实验