网络数据库复习题题 下载本文

1. 将以下习题共8次书写在练习本上,上交

2. 两周后交,即12月1日上课时或12月2日实验课时交。

3. 作用收上来,留待评估,所以请大家将作业复印后自留,以供复习。 4. 按8次作业写,注意每次间留出间隔。

习题1(9-1)分析题 ()

学生运动会模型:

(1)有若干班级,每个班级包括: 班级号,班级名,专业,人数

(2)每个班级有若干运动员,运动员只能属于一个班,包括:运动员号,姓名,性别,年龄 (3)有若干比赛项目,包括:项目号,名称,比赛地点

(4)每名运动员可参加多项比赛,每个项目可有多人参加 (5)要求能够公布每个比赛项目的运动员名次与成绩 (6)要求能够公布各个班级团体总分的名次和成绩 解题要求:

(1) 画出每个实体及其属性关系、实体间实体联系的E-R图.

运动员号 姓名 n 班级号 1 班级名 运动员 m 性别 属于 班级 年龄 专业 人数 参加 n 比赛项目 项目号 名称 比赛地点 (2)根据试题中的处理要求:完成数据库逻辑模型,包括各个表的名称和属性.并指出每个表的主键和外键。 运动员(运动员号,姓名,性别,年龄) 班级(班级号,班级名,专业,人数) 比赛项目(项目号,名称,比赛地点) 单项比赛成绩(项目号,运动员号,姓名,名次,成绩) 班级团体成绩(班级号,名次,成绩) 习题2.(9-25)编写存储过程 打印学生表S(Sno,Sname,Sbirth,Sspecial)中姓“王”学生的学号、姓名。

select Sno,Sname from S where Sname like ?王%? 3.按要求完成以下题目:

在学生成绩管理数据库school中创建如下三个表: student(sno, sname, ssex, sbirthday,sclass) course(cno, cname, tno)

teacher(tno, tname, tsex, tbirthday, prof, depart)

use school create table student (sno char(4), sname char(8), ssex char(2), sbirthday datetime, sclass char(4) )

create table course (cno char(4), cname char(12), tno char(4) )

create table (tno char(4), tname char(8), tsex char(2), tbirthday datetime, prof text, depart text )

习题3.(10-13)

i通过T-SQL语句实现对于如下表结构的修改。

(1) 在school数据库中创建一个score表,包含的字段分别为sno、cno和degree,数据类型分别为char(10)、char(6)和float,其中sno和cno不允许为空。

use school

create table course (sno char(10) not null, cno char(6) not null, degree float

)

(2) 为表score创建与表student的外键约束FK_student_sno。

use school

习题4.(10-20)

ii数据操纵语言DML考察(插入、修改和删除数据记录) (3) 将“082118”课程的所有学生成绩上调2%。

use school

习题5.(10-27)

iii数据查询语言DQL(查询)

(4).查询course表中包括“数据库”关键词的课程,输出课程号、课程名和任课教师编号。 select 课程号,课程名,任课教师编号 from course where 课程名 like ?%数据库%? 习题6.(11-10)

(5).查询student表中所有年龄大于21岁的学生的姓名和年龄。 sleect 姓名,年龄 from student where 年龄>21

(6).查询每位同学的平均分,输出学生的学号、姓名及平均成绩,并且按照平均成绩降序排序。

sleect 学号,姓名,avg(成绩)as 平均成绩 from student,score where student.学号=score.学号 group by 学号

order by desc

(7).查询没有选修“052118”课程的学生学号、姓名和班级。

select 学号,姓名,班级 from student,score update course

set degree=degree*1.02 from course where cno=?082118? alter table course

constraint FK_student_sno

foreign key (sno) reference student(sno)

where student.学号=score.学号 and 课程号= ?052118? and score.学号=?? 习题7.(11-24)

iv要求创建一个存储过程stu_num,查询指定班级中选修指定课程的学生人数,并将查询结果通过参数返回。调用存储过程查询“08031”班中选修“网络数据库应用”的学生人数。

create proc stu_num @class char(5), @cname varchar(12), as

select count(*) as 人数from student,score

where student.学号=score.学号 and student.班级= @class and score.课程名=@cname go

exec stu_num ?08031?, ?网络数据库应用?

习题8.(12-1)

v 创建一个触发器trigforeign,当向score表中插入一条记录时,如果插入或更新的数据与course表中数据不匹配,即没有对应的课程号存在,则将此记录删除,并激发用户自定义错误提示信息“该课程信息不存在,不允许插入选修记录”,错误级别16,状态2。

create trigger trigforeign on score for insert,update

as begin

declare @cno char(4)

select @cno=cno from inserted

if not exists(select * from score where cno=@cno) begin

raiserror(?该课程信息不存在,不允许插入选修记录?,16,2) rollback end end return