SQL Server数据库 复习提要(B信管091).doc
文本预览下载声明
五.按要求写出相应的SQL语句(每题2分,共20分)
设有如下关系表:
student(sid char(8),sname char(10),ssex char(2),height real,sage datetime,stl int)
course(cid char(4),cname char(10),credit int)
result(sid char(8),cid char(4),score int )
注:sid为学号(09表示入学时间,04表示学院代号,01表示班级代号,05表示学号),sname为姓名,ssex为性别(‘男’,‘女’), height 为身高,sage为出生年月,stl表示高考总分;
cid为课程号,cname为课程名称,credit为学分;
score为课程成绩。
写出实现下列功能的SQL 语句。
(1)创建一个新的表totalgrade,具有数据列:sid,sname,sscore
Create table totalgrade(sid char(8),sname char(10),sscore int)
(2)在student中插入一条记录(,’王鸿路’,’03/21/93’);
Insert into student (sid,sname,sage)
values(,’王鸿路’, ’03/21/93’)
(3)通过student表,更新totalgrade表的列数据;
Insert into totalgrade
Select sid,sname,stl from student
(4)将result表中学号为的学生,课程号为“0102”的分数改为94;
Update result
set score = 94
Where sid= and cid=‘1020’
(5)通过result表更新totalgrade表的总成绩sscore
Update totalgrade
set sscore=
(select sum(score) from result where totalgrade.sid=result.sid )
(6)删除totalgrade表中总成绩sscore低于400分的学生记录
Delete from totalgrade
where sscore 400
(7)在student表中查询学号同学的姓名和年龄
Select sname, datepart(yy,getdate())-datepart(yy,sage)
from student
where sid=
(8)在student表中查询与“刘伟平”年龄相同的所有学生的学号、姓名
Select sid,sname
from student
where sage=
(select sage from student where sname=‘刘伟平’)
(9)列出班级为03的学生中高考总分比班级为02的学生都高的学生的sid,sname,stl
Select sid, sname,stl
from student
where substr(sid,5,2)=‘03’
and stlall (select stl from student where substr(sid,5,2)=‘02’)
(10)查询选修“计算机基础”课程分数在80—90之间的学生的学号、姓名、课程名称、分数
Select student.sid , student.sname,course.cname,result.score
From student,course,result
Where student.sid=result.sid and course.cid=result.cid andcourse.cname=’计算机基础’ and result.score between 80 and 90
六、程序填空(每空2分,共20分)
(主要是关于完整性约束、游标、存储过程、触发器)
1.利用T-SQL语言修改student 的表,为学号sid列定义主键,为高考总分stl列定义约束“0-500”分。
alter table student(
add Constraint pk_s primary key ( ‘sid ’ )
add Constraint ck_stl check ( stl between 0 and 500 ))
2. 以下程序用游标gd_cur查寻并显示studentsdb数据库的grade表的每条记录,且判断出每条记录的分数等
显示全部