IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】
SQL存储过程实例练习和答案

题目1
1、学校图书馆借书信息管理系统建立三个表:
学生信息表:student
字段名称
数据类型
说明
stuID
char(10)
学生编号,主键
stuName
Varchar(10)
学生名称
major
Varchar(50)
专业
图书表:book
字段名称
数据类型
说明
BID
char(10)
图书编号,主键
title
char(50)
书名
author
char(20)
作者
借书信息表:borrow
sql查询语句实例大全
字段名称
数据类型
说明
borrowID
char(10)
借书编号,主键
stuID
char(10)
学生编号,外键
BID
char(10)
图书编号,外键
T_time
datetime
借书日期
B_time
datetime
还书日期
请编写SQL语句完成以下的功能:
1)查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示:
2)查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:
3)查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期;参考查询结果如下图所示:
4)查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所示:
附加:建表语句:
USEmaster
GO
/*$$$$$$$$$$$$$建库$$$$$$$$$$$$$$$$$$$$$$$$*/
--检验数据库是否存在,如果为真,删除此数据库--
IFexists(SELECT*FROMsysdatabasesWHEREname='BOOK')
DROPDATABASEBOOK
GO
CREATEDATABASEBOOK
GO
--建数据表--
USEBOOK
GO
CREATETABLEstudent--学生信息表
(
stuIDCHAR(10)primarykey,--学生编号
stuNameCHAR(10)NOTNULL,--学生名称
majorCHAR(50)NOTNULL--专业
)
GO
CREATETABLEbook--图书表
(
BIDCHAR(10)primarykey,--图书编号
titleCHAR(50)NOTNULL,--书名
authorCHAR(20)NOTNULL,--作者
)
GO
CREATETABLEborrow--借书表
(
borrowIDCHAR(10)primarykey,--借书编号
stuIDCHAR(10)foreignkey(stuID)referencesstudent(stuID),--学生编号
BIDCHAR(10)foreignkey(BID)referencesbook(BID),--图书编号
T_timedatetimeNOTNULL,--借出日期
B_timedatetime--归还日期
)
GO
--学生信息表中插入数据--
INSERTINTOstudent(stuID,stuName,major)VALUES('1001','林林','计算机')
INSERTINTOstudent(stuID,stuName,major)VALUES('1002','白杨','计算机')
INSERTINTOstudent(stuID,stuName,major)VALUES('1003','虎子','英语')
INSERTINTOstudent(stuID,stuName,major)VALUES('1004','北漂的雪','工商管理')
INSERTINTOstudent(stuID,stuName,major)VALUES('1005','五月','数学')
--图书信息表中插入数据--
INSERTINTObook(BID,title,author)VALUES('B001','人生若只如初见','安意如')
INSERTINTObook(BID,title,author)VALUES('B002','入学那天遇见你','晴空')
INSERTINTObook(BID,title,author)VALUES('B003','感谢折磨你的人','如娜')
INSERTINTObook(BID,title,author)VALUES('B004','我不是教你诈','刘庸')
INSERTINTObook(BID,title,author)VALUES('B005','英语四级','白雪')
--借书信息表中插入数据--
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T001','1001','B001','2007-12-26',null)
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T002','1004','B003','2008-1-5',null)
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T003','1005','B001','2007-10-8','2007-12-25')
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T004','1005','B002','2007-12-16','2008-1-7')
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T005','1002','B004','2007-12-22',null)
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T006','1005','B005','2008-1-6',null)
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T007','1002','B001','2007-9-11',null)
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T008','1005','B004','2007-12-10',null)
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T009','1004','B005','2007-10-16','2007-12-18')
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T010','1002','B002','2007-9-15','2008-1-5')
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T011','1004','B003','2007-12-28',null)
INSERTINTOborrow(borrowID,stuID,BID,T_time,B_time)VALUES('T012','1002','B003','2007-12-30',null)
标准答案:
--1)查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期—
select学生编号=stuID,学生名称=(selectstuNamefromstudentwherestuID=,图书编号=BID,图书名称=(selecttitlefrombookwhereBID=,借出日期=T_timefromborrowwherestuIDin(selectstuIDfromstudentwheremajor='计算机')andT_time>'2007-12-15'andT_time<'2008-1-8'
--2)查询所有借过图书的学生编号、学生名称、专业--
select学生编号=stuID,学生名称=stuName,专业=majorfromstudentwherestuIDin(selectstuIDfromborrow)
--3)查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期--
select学生名称=(selectstuNamefromstudentwherestuID=,图书名称=(selecttitlefrombookwhereBID=,借出日期=T_time,归还日期=B_timefromborrowwhereBIDin(selectBIDfrombookwhereauthor='安意如')
--4)查询目前借书但未归还图书的学生名称及未还图书数量--
select学生名称=(selectstuNamefromstudentwherestuID=,借书数量=count(*)fromborrowwhereB_timeisnullgroupbystuID
题目2
程序员工资表:ProWage
字段名称
数据类型
说明
ID
int
自动编号,主键
PName
Char(10)
程序员姓名
Wage
int
工资
创建一个存储过程,对程序员的工资进行分析,月薪150010000不等,如果有百分之五十的人薪水不到2000元,给所有人加薪,每次加100,再进行分析,直到有一半以上的人大于2000元为止,存储过程执行完后,最终加了多少钱?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。