SQL数据库实验和参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库实验和参考答案
上机实验七
1.声明一个字符串型的局部变量,并对其赋值:‘我的变量’,然后显示出此值。
declare @a char(10)
set @a='我的变量'
--select @a as 变量的值
print @a
2.编程实现如下功能:
1)声明两个整形的局部变量:@i1和@i2,对@i1赋初值:10,@i2的值为:@i1乘以5,再显示@i2
的结果值。
declare @i1 int,@i2 int
set @i1=10
set @i2=@i1*5
print @i2
2)用While语句实现5000减1,
减2,……一直减到50的计算,并显示最终的结果。
declare @sum int,@i int
set @sum=5000
set @i=1
while(@i<=50)
begin
set @i=@i+1
end
print @sum
3)输出100以内的素数。
declare @i smallint,@j
smallint,@k smallint
set @i=2
while(@i<=100)
begin
set @k=0
set @j=2
while(@j<@i)
begin
if(@i%@j=0)
begin
set @j=@I
end
set @j=@j+1
end
if @k=0
print @I
set @i=@i+1
end
4)将字符数在20以内的字符串变量C的值逆序输出。要求输出界面为:
declare @i varchar(20),@j int,@k varchar(20)
set @j=1
set @k=''
while @j<=len(@i)
begin
set @k=substring(@i,@j,1) set @j=@j+1
end
print '字符串C的值:'+@i
print 'C的逆序字符串:'+@k
5)从SC表中查询所有学生的选课成
绩情况,分别统计各分数段人数,
并输出统计结果。
输出格式为:
缺考:人
<60:人
60-69:人
70-79:人
80-89:人
90-100:人
select 成绩=
case
when 成绩is null then '缺考:' when 成绩<60 then '<60'
when 成绩>=60 and 成绩<70 then '60-69:'
when 成绩between 70 and 79 then '70-79:'
when 成绩between 80 and 89 then '80-89:'
when 成绩between 90 and 100 then '90-100:'
end
into ss1
from sc
select 成绩分数段,count(*) 人数from ss1
group by 成绩
上机实验八
3.创建满足下述条件的存储过程:1)创建查询每个学生的修课学分
的存储过程,要求列出学生学号
及总学分。
create procedure t1_1
as
select 学号,sum(学分) 总学分
from sc ,course where sc.课程号=course.课程号group by 学号
go
exec t1_1
2)创建查询个学生的学号、姓名、课程号、课程名、课程学分的存
储过程,将学生所在的系作为输
入参数,执行此存储过程,并分
别指定一些不同的输入参数值。
create proc t1_2
@szx char(20)
as
select student.学号,姓名,course.课程号,课程名,学分
from student, sc ,course where sc.学号=student.学号
and course.课程号=sc.课程号and 所在系=@szx
exec t1_2 '计算机系'
exec t1_2 '信息系'
3)创建计算1+2+3+……一直加到
指定值的结果的存储过程,要
求:计算的终止值由输入参数决
定,计算结果由输出参数表示。
实验如下数据并记下结果:
1+2+3+ (150)
1+2+3+ (500)
create proc t1_3
@in1 int,@out int output
as
declare @sum int
declare @n int
set @n=1
beg:
if(@n<=@in1)
begin
set @sum=@sum+@n
set @n=@n+1
goto beg
end
set @out=@sum
declare @i1 int
exec t1_3 150,@i1 out