77范文网 - 专业文章范例文档资料分享平台

数据库上机习题及答案

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

数据库及应用复习题

一、设计题

有一个[学生课程]数据库,数据库中包括三个表:

学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为: Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 为关键字。

课程表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记为:Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。

成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为: SG(Sno,Cno,Grade) (SNO, CNO)为关键字。

用SQL语言实现下列功能:

1.建立学生表Student,其中学号属性不能为空,并且其值是唯一的。 2.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。

3.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。 4.查询学习1号课程的学生最高分数、平均成绩。 5.查询与“李洋”在同一个系学习的学生。 6.将计算机系全体学生的成绩置零。 7.删除学号为05019的学生记录。

8.删除计算机系所有学生的成绩记录。

1.

CREATETABLE Student

(Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(2), Sage INT,

Sdept CHAR(15)) 2.

ALTER TABLE Student ADD Scome DATETIME 3.

SELECT Sno, Grade FROM SG

WHERE Cno='3'

ORDER BY Grade DESC 4.

SELECT MAX(Grade), AVG(Grade) FROM SC

WHERE Cno='1' 5.

SELECT Sno, Sname, Sdept FROM Student WHERE Sdept IN

(SELECT Sdept FROM Student WHERE Sname='李洋')

6. UPDATE SG

SET Grade=0 WHERE Sno in

( SELECT Sno FROM Student WHERE Sdept = '计算机系')

7.DELETE FROM Student

WHERE Sno='05019'

8. DELETE FROM SG

WHERE Sno in

( SELECT Sno FROM Student WHERE Sdept = '计算机系')

二、设计题

现有关系数据库如下:

数据库名:教师数据库

教师表(编号 char(6),姓名,性别,民族,职称,身份证号) 课程表(课号 char(6),名称)

任课表(ID,教师编号,课号,课时数)

用SQL语言实现下列功能的sql语句代码: 1. 创建上述三表的建库、建表代码(14分);

要求使用:主键(教师表.编号,课程表.课号)、外键(任课表.教师编号,任课表.课号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性别、课时数),自动编号(ID)

2. 将下列课程信息添加到课程表的代码(6分) 课号 课程名称

100001 SQL Server数据库 100002 数据结构 100003 VB程序设计

修改 课号为100003的课程名称:Visual Basic程序设计 删除 课号为100003的课程信息

3. 写出创建[任课表视图](教师编号,姓名,课号,课程名称,课时数)的代码;(4分)

4. 写出创建[某门课任课教师]内嵌表值函数以及检索的代码;(6分) 检索:所有代'SQL Server数据库'这门课程的老师姓名;

5. 写出创建[统计课时数]:输出最大课时数、最低课时数、平均课时的存储过程以及执行代码;(6分) 6. 写出创建:计算某教师代课总课时,并将值返回的存储过程以及执行代码。(6分) 执行:计算“郭老师”的总课时。(6分)

7. 检索有一门或一门以上课程课时数大于90的所有教师的信息,包括编号、姓名。(4分)

8. 建一个规则,并将其绑定到教师表的职称列上,规定取值为('教授','副教授','讲师', '助教')之一。(4分) 1.

create database [教师数据库] --(2分) use [教师数据库] go

create table 教师表 --(6分) ([编号] char(6) primary key, [姓名] nchar(4) not null,

[性别] nchar(1) check([性别] in ('男', '女')), [民族] nchar(8) default '汉族' not null, [职称] nchar(12),

[身份证号] char(18) unique )

create table 课程表 --(2分) ([课号] char(6) primary key, [名称] char(40) not null )

create table 任课表 --(4分) (ID IDENTITY(1, 1),

[教师编号] char(6) references 学生表(学号), [课号] char(6) references 课程表(课号),

[课时数] integer check([课时数] between 0 and 200) ) 2.

insert 课程表 values('100001', 'SQL Server数据库') insert 课程表 values('100002', '数据结构') insert 课程表 values('100003', 'VB程序设计')

update 课程表 set 名称='Visual Basic程序设计' where 课号='100003'

delete 课程表 where 课号='100003' 3.

create view [任课表视图] as

select 教师编号,姓名,课号, 课程名称,课时数 from 教师表,任课表 where 教师表.编号=任课表.教师编号 4.

create function [某门课任课教师](@课程名 varchar(15)) returns table as

return (select 课程名称, 课时数, 教师姓名=姓名 from 任课表视图 where 课程名=@课程名) go

select * from [某门课任课教师]('SQL Server数据库') 5.

create procedure [统计课时数]

as

select 最大课时数=max(课时) ,最小课时数=min(课时),平均课时数=avg(课时) from 任课表 go

execute [统计课时] 6.

create procedure [统计课时] @教师名 nchar(16), as begin

declare @总课时 int

select @总课时=sum (课时) from 任课表视图 where 姓名 = @教师名 end go

execute [统计课时] '郭老师' 7.

select 编号, 姓名 from 教师表

where编号 in (select distinct 教师编号 from 任课表 where课时数>=90) 8.

create rule zhicheng _rule

as @zhicheng in ('教授','副教授','讲师', '助教') go

sp_bindrule zhicheng_rule, '教师表.职称' 三、设计题(共50分)

现有关系数据库如下:

数据库名:医院数据库

医生表(编号,姓名,性别,出生日期,职称) 病人表(编号,姓名,性别,民族,身份证号) 病历表(ID,病人编号,医生编号,病历描述) 用SQL语言实现下列功能的sql语句代码: 1. 创建上述三表的建库、建表代码;

要求使用:主键(师医生表.编号,病人表.课号)、外键(病历表.医生编号,病历表.病人课号)、非空(职称,姓名)、检查(性别),自动编号(ID) (16分)

2. 将下列医生信息添加到医生表的代码

编号 姓名 性别 出生日期 职称

100001 杜医生 男 1963-5-18 副主任医师 100002 郭医生 女 1950-7-26 副主任医师 100003 刘医生 男 1973-9-18 医师

修改 编号为100002的医生职称为‘主任医师’ 删除 编号为100003的医生信息 (8分)

3. 写出创建:医疗表视图(医生编号,姓名,病人姓名,病历)的代码;(4分) 4. 写出所有病人编号、姓名、病历、以及病人所对应的医生编号的查询语句;(4分)

7. 写出创建: 输出某医生(根据医生编号即可)看病人数存储过程以及执行过程(要求输入医生姓名的参数,输出病人数)(6分)。 8. 写出查询1970年以前出生的医生(4分)。

7. 检索有病人的医生信息。(4分)

8. 创建一个默认,并将其绑定到医生表的成绩职称列上,默认值为“医师”。(4分) 1.

create database [医院数据库] use [医院数据库] go

create table 医生表

([编号] char(6) primary key, [姓名] nchar(4) not null,

[性别] nchar(1) check([性别] in ('男', '女')), [出生日期]datetime , [职称] char(18) not null )

create table病人表

([课号] char(6) primary key, [姓名] nchar(4) not null,

[性别] nchar(1) check([性别] in ('男', '女')), [民族] nchar(10),

[身份证号] char(18) not null )

create table病历表 (ID IDENTITY(1, 1),

[病人编号] char(6) references 病人表(学号), [医生编号] char(6) references 医生表(编号), [病历描述] varchar(1000) ) 2.

insert 医生表 values('100001', '杜医生', '男', '1963-5-18', '主任医师')

insert 医生表 values('100002', '郭医生', '女', '1950-7-26', '主任医师')

insert 医生表 values('100003', '刘医生', '男', '1973-9-18', '师')

update医生表 set 职称='主任医师' where 编号='100002' delete医生表 where 编号='100003' 3.

副副医

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据库上机习题及答案在线全文阅读。

数据库上机习题及答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/417326.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: