SQL存储过程实例练习_第1页
SQL存储过程实例练习_第2页
SQL存储过程实例练习_第3页
SQL存储过程实例练习_第4页
SQL存储过程实例练习_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

字段名称

数据类型

stuID

char(10)

stuName

major

Varchar(10)

Varchar(50)

专业

数据类型

BID

title

char(10)

char(50)

char(20)

author

数据类型

BID

T_time

B_time

1)查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、

学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示:

2)查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:

参考查询结果如下图所示:

示:

GO

/*$$$$$$$$$$$$$建库$$$$$$$$$$$$$$$$$$$$$$$$*/

GO

GO

(

)

GO

CREATETABLEbook--图书表

(

BIDCHAR(10)primarykey,

--图书编号

)

GO

CREATETABLEborrow--借书表

(

borrowIDCHAR(10)primarykey,

--借书编号

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',北'漂的雪','工商管理')

INTO

INTO

INTO

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T001','1001','B001','2007-12-26',null)

INSERT

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T002','1004','B003','2008-1-5',null)

INSERT

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T003','1005','B001','2007-10-8','2007-12-25')

INSERTINTO

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T004','1005','B002','2007-12-16','2008-1-7')

INTO

INTO

INTO

INTO

INTO

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T005','1002','B004','2007-12-22',null)

INSERT

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T006','1005','B005','2008-1-6',null)

INSERT

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T007','1002','B001','2007-9-11',null)

INSERT

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T008','1005','B004','2007-12-10',null)

INSERT

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T009','1004','B005','2007-10-16','2007-12-18'

)

INSERT

INTO

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T010','1002','B002','2007-9-15','2008-1-5')

INSERT

INTO

borrow(borrowID,stuID,BID,T_time,B_time)VALUES('T011','1004','B003','2007-12-28',null)

INSERT

INTO

borrow(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=borrow.stuID),图

书编号=BID,图书名称=(selecttitlefrombookwhereBID=borrow.BID),借出日期=T_timefrom

borrowwherestuIDin(selectstuIDfromstudentwheremajor='计算机')and

题目2

程序员工资表:ProWage

数据类型

ID

请编写T-SQL来实现如下功能:

1)创建存储过程,查询是否有一半程序员的工资在2200、3000、3500、4000、5000或6000

元之上,如果不到分别每次给每个程序员加薪100元,至之一半程序员的工资达到2200,

3000,3500,4000,5000或6000元。

2)创建存储过程,查询程序员平均工资在4500元,如果不到则每个程序员每次加200元,

至到所有程序员平均工资达到4500元。

建表语句

GO

/*$$$$$$$$$$$$$建库$$$$$$$$$$$$$$$$$$$$$$$$*/

IFexists(SELECT*FROMsysdatabasesWHEREname='Wage')

GO

CREATEDATABASEWage

GO

--建数据表--

USEWage

GO

CREATETABLEProWage--程序员工资表

(

IDintidentity(1,1)primarykey,--工资编号

PNameCHAR(10)NOTNULL,

WageintNOTNULL--工资

--程序员姓名

)

GO

--插入数据--

INSERTINTOProWage(PName,Wage)VALUES(青'鸟',1900)

INSERTINTOProWage(PName,Wage)VALUES(张'三',1200)

INSERTINTOProWage(PName,Wage)VALUES(李'四',1800)

INSERTINTOProWage(PName,Wage)VALUES(二'月',3500)

INSERTINTOProWage(PName,Wage)VALUES(蓝'天',2780)

标准答案:

--1、创建存储过程--

ifexists(select*fromsysobjectswherename='Sum_wage')

dropprocedureSum_wage

GO

createprocedureSum_wage

begin

if(selectcount(*)fromProWage)>2*(selectcount(*)fromProWagewhereWage>=@PWage)

updateProWageset@total=@total+@AWage,Wage=Wage+@AWage

else

break

end

--2、创建存储过程2--

ifexists(select*fromsysobjectswherename='Avg_wage')

dropprocedureAvg_wage

GO

createprocedureAvg_wage

@PWageint,

@AWageint,

@totalint

as

while(1=1)

begin

if((selectAvg(Wage)fromProWage)<=@PWage)

updateProWageset@total=@total+@AWage,Wage=Wage+@AWage

else

break

end

--调用存储过程--

execAvg_wage@PWage=3000,@AWage=200,@total=0

execAvg_wage@PWage=4500,@AWage=200,@total=0

题目3:

学生成绩信息三个表,结构如下:

学生表:Member

字段名称

数据类型

Char(10)

Char(50)

说明

说明

说明

MID

学生号,主键

姓名

MName

课程表:

字段名称

数据类型

Char(10)

Char(50)

FID

课程,主键

课程名

FName

成绩表:Score

字段名称

数据类型

SID

自动编号,主键,成绩记录号

课程号,外键

FID

Char(10)

Char(10)

int

MID

Score

成绩

请编写T-SQL语句来实现如下功能:

1)查询各个学生语文、数学、英语、历史课程成绩,例如下表:

姓名

张萨

王强

李三

李四

语文

78

数学

67

89

67

70

87

80

78

97

66

2)查询四门课中成绩低于70分的学生及相对应课程名和成绩。

3)统计各个学生参加考试课程的平均分,且按平均分数由高到底排序。

4)创建存储过程,分别查询参加1、2、3、4门考试及没有参加考试的学生名单,要求显

示姓名、学号。

建表语句:

GO

/*$$$$$$$$$$$$$建库$$$$$$$$$$$$$$$$$$$$$$$$*/

IFexists(SELECT*FROMsysdatabasesWHEREname='Student')

GO

GO

CREATETABLEMember--学生表

(

MNameCHAR(50)NOTNULL--姓名

)

GO

CREATETABLEF--课程表

(

FIDchar(10)primarykey,

--课程号

FNameCHAR(50)NOTNULL--课程名

)

GO

CREATETABLEscore--学生成绩表

(

--课程号

--学生号

)

GO

--课程表中插入数据--

INSERTINTOMember(MID,MName)VALUES('M001',张'萨')

INSERTINTOMember(MID,MName)VALUES('M002',王'强')

INSERTINTOMember(MID,MName)VALUES('M003',李'三')

INSERTINTOMember(MID,MName)VALUES('M004',李'四')

INSERTINTOMember(MID,MName)VALUES('M005',阳'阳')

INSERTINTOMember(MID,MName)VALUES('M006',虎'子')

INSERTINTOMember(MID,MName)VALUES('M007',夏'雪')

INSERTINTOMember(MID,MName)VALUES('M008',璐'璐')

INSERTINTOMember(MID,MName)VALUES('M009',珊'珊')

INSERTINTOMember(MID,MName)VALUES('M010',香'奈儿')

--成绩表中插入数据--

INSERTINTOScore(FID,MID,Score)VALUES('F001','M001',78)

INSERTINTOScore(FID,MID,Score)VALUES('F002','M001',67)

INSERTINTOScore(FID,MID,Score)VALUES('F003','M001',89)

INSERTINTOScore(FID,MID,Score)VALUES('F004','M001',76)

INSERTINTOScore(FID,MID,Score)VALUES('F001','M002',89)

INSERTINTOScore(FID,MID,Score)VALUES('F002','M002',67)

INSERTINTOScore(FID,MID,Score)VALUES('F003','M002',84)

INSERTINTOScore(FID,MID,Score)VALUES('F004','M002',96)

INSERTINTOScore(FID,MID,Score)VALUES('F001','M003',70)

INSERTINTOScore(FID,MID,Score)VALUES('F002','M003',87)

INSERTINTOScore(FID,MID,Score)VALUES('F003','M003',92)

INSERTINTOScore(FID,MID,Score)VALUES('F004','M003',56)

INSERTINTOScore(FID,MID,Score)VALUES('F001','M004',80)

INSERTINTOScore(FID,MID,Score)VALUES('F002','M004',78)

INSERTINTOScore(FID,MID,Score)VALUES('F003','M004',97)

INSERTINTOScore(FID,MID,Score)VALUES('F004','M004',66)

INSERTINTOScore(FID,MID,Score)VALUES('F001','M006',88)

INSERTINTOScore(FID,MID,Score)VALUES('F002','M006',55)

INSERTINTOScore(FID,MID,Score)VALUES('F003','M006',86)

INSERTINTOScore(FID,MID,Score)VALUES('F004','M006',79)

INSERTINTOScore(FID,MID,Score)VALUES('F002','M007',77)

INSERTINTOScore(FID,MID,Score)VALUES('F003','M008',65)

INSERTINTOScore(FID,MID,Score)VALUES('F004','M007',48)

INSERTINTOScore(FID,MID,Score)VALUES('F004','M009',75)

INSERTINTOScore(FID,MID,Score)VALUES('F002','M009',88)

标准答案:

英语=SUM(CASEF.FNameWHEN'语文'THENScore.ScoreEN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论