数据库实验七
1.在写随机整数哪个实验时,里面有赋值语句而在T_SQL中赋值语句需要加上set,而我在写代码时老是按照c语言的格式写,直接用变量名等于要赋予的值,结果出现了警告,后来看了看老师PPT上的例程发现了错误的原因。
2.在写标量函数时求某人某门课的成绩时,刚看到这道题时我都不知道怎么写的,还好老师PPT上有类似的例子,看了一些例程知道往什么方向去写了,知道了怎么去写函数的形参,函数体,以及返回值,最后成功的把代码写了出来了。
FROM dbo.score inner join dbo.student on score.studentno=student.studentno
WHERE courseno=@cno and usually*0.2+final*0.8>=80
)
实验过程及结果:
1.运行如下代码,记录运行结果:
2.对score表用case语句显示成绩的等级优、良、中、及格、不及格:
执行语句:
selectstudentnoas'学号',coursenoas'课程',
case
whenusually*0.2+final*0.8>=90then'优秀'
whenusually*0.2+final*0.8>=80then'良好'
whenusually*0.2+final*0.8>=70then'中等'
whenusually*0.2+final*0.8>=60ቤተ መጻሕፍቲ ባይዱhen'及格'
else'不及格'
endas'总评成绩'
fromscore
结果截图:
3.编写一个代码段,求10个两位随机整数(floor(90*rand())+10)的和:
编写的代码:
declare@singlesmallint,@sumsmallint,@ismallint
这次实验让我知道了在学习其他的语言是一定要注意,每种语言的特点不然会感觉学的东西很死板,不知道怎么灵活的去运用。这就是我这次实验的最大收获。
洛阳理工学院实验报告
系别
计算机学院
班级
B140510
学号
B14051027
姓名
张永欢
课程名称
数据库原理及系统实验
实验日期
2016-3-24
实验名称
实验七Transact-SQL编程
成绩
实验目的:
练习掌握T-SQL基本编程。
实验条件:
计算机一台SQL Server2008
实验内容:
1.运行如下代码,记录运行结果
编写的代码:
createfunctionfinally(@cnochar(6),@studentchar(10))returnsint
as
begin
declare@finallint
select@finall=
(selectfinal
fromscore
wherecourseno=@cnoandstudentno=@student
)
return@finall
end
执行结果截图:
5.运行如下代码,创建一个表值函数:
CREATE FUNCTION f_total (@cno char(6) )
RETURNS table
AS RETURN
( SELECT student.studentno, sname,usually*0.2+final*0.8 as total
set@i=1
set@single=0
set@sum=0
while(@i<=10)
begin
select@single=floor(90*rand())+10
set@sum=@sum+@single
set@i=@i+1
end
print@sum
执行结果截图:
4.编写一个标量函数,求某门课程某个学生的期末成绩:
FROM dbo.score inner join dbo.student on score.studentno=student.studentno
WHERE courseno=@cno and usually*0.2+final*0.8>=80
)
执行结果截图:
实验总结:
这次实验主要任务是T_SQL的编程的运用,实验的内容不多,但是在实验过程中还是出现了一点小的问题:
declare @birth smalldatetime
select @birth ='1991-3-3'
select year(getdate() )-year(@birth)
select DATEDIFF(year,getdate(),@birth)
2.对score表用case语句显示成绩的等级优、良、中、及格、不及格
3.编写一个代码段,求10个两位随机整数(floor(90*rand())+10)的和。
4.编写一个标量函数,求某门课程某个学生的期末成绩。
5.运行如下代码,创建一个表值函数:
CREATE FUNCTION f_total (@cno char(6) )
RETURNS table
AS RETURN
( SELECT student.studentno, sname,usually*0.2+final*0.8 as total