数据库原理及应用实验2答案Word文档下载推荐.docx
《数据库原理及应用实验2答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库原理及应用实验2答案Word文档下载推荐.docx(12页珍藏版)》请在冰点文库上搜索。
1)求“选“数据库原理与技术”课程的学生名单”
2)求“没有任课的教师名单”。
3)求“一人任多门(>
1)课程的教师名单”。
4)求“选修人数少于2人的课程名单”。
5)求“高于所有课程总平均分的学生姓名、课程名及成绩。
使用SQL查询分析器编辑查询、执行并查看结果。
3.使用SQL命令建立:
1)数据库“工程管理”。
2)表:
工程(工程编号,预算,地址)、供应商(供应商编号,名称,地址)、零件(零件编号,名称,单价)和供应(供应商编号,工程编号,零件编号,数量)。
3)视图:
“北京供应商的供应情况”。
4.使用SQL查询分析器的“打开表”功能完成三个表的数据录入。
工程表:
供应商表:
工程编号
预算(万元)
地址
供应商编号
名称
J1
123.4
北京
S1
群星
J2
78.8
天津
S2
胜利
杭州
J3
23.98
上海
S3
飞马
S4
解放
零件表:
零件编号
规格
单价(元)
P1
螺母
大
0.5
P2
螺栓
0.4
P3
螺丝刀
4.3
P4
小
供应表:
数量
500
800
900
400
1130
380
300
J4
210
980
200
1200
600
5.使用“工程管理”中的数据完成下列查询:
1)求“供应零件P1的供应商的名称”。
2)求“将零件P1供应给工程J1的供应商的名称”。
3)求“向工程J1提供零件的供应商的地址”。
4)求“在同一城市的工程编号和供应商的名称”。
5)求“只向一个工程提供零件的供应商的名称”。
6)求“供应零件数量最多的供应商的名称”。
6.编写存储过程,计算每个学生的年龄,将其放在一个新表“学生年龄表”中。
五、实验内容、结果及分析
查询语句:
SELECT姓名
FROM学生成绩join课程基本信息on(学生成绩.课程号=课程基本信息.课程号)
join学生基本信息on(学生基本信息.学号=学生成绩.学号)
WHERE课程名='
数据库原理与技术'
查询结果:
FROM教师基本信息
WHERE教师编号NOTIN(SELECTDISTINCT任课教师号FROM
课程基本信息WHERE任课教师号ISnotNULL)
运行结果:
SELECT姓名
where教师编号IN
(SELECT任课教师号
FROM课程基本信息
GROUPBY任课教师号
HAVINGCOUNT(*)>
1)
SELECT课程名
where课程号IN
(SELECT课程号
FROM学生成绩
GROUPBY课程号
HAVINGCOUNT(*)<
2)
select姓名,课程名,AVG(成绩)
from学生成绩join课程基本信息on(学生成绩.课程号=课程基本信息.课程号)
join学生基本信息on(学生基本信息.学号=学生成绩.学号)
GROUPBY姓名,课程名
havingAVG(成绩)>
=all
(selectAVG(成绩)AS课程平均分
from学生成绩
GROUPBY课程号)
查询结果:
2.使用SQL命令建立:
1.工程(工程编号,预算,地址)、
2.供应商(供应商编号,名称,地址)
3.零件(零件编号,名称,单价)
供应(供应商编号,工程编号,零件编号,数量)
4.使用SQL查询分析器的“打开表”功能完成三个表的数据录入。
工程表
供应商
零件表
供应表
5.使用“工程管理”中的数据完成下列查询:
4)求“供应零件P1的供应商的名称”。
查询语句:
select名称
from供应商
where供应商编号
in
(select供应商编号
from供应
where(供应.零件编号='
P1'
))
查询结果:
5)求“将零件P1供应给工程J1的供应商的名称”。
and供应.工程编号='
J1'
6)求“向工程J1提供零件的供应商的地址”。
select地址
where(供应.工程编号='
7)求“在同一城市的工程编号和供应商的名称”。
select工程编号,名称
from供应商join工程on(工程.地址=供应商.地址)
8)求“只向一个工程提供零件的供应商的名称”。
9)求“供应零件数量最多的供应商的名称”。
select名称,sum(数量)as总数
from供应join供应商on(供应.供应商编号=供应商.供应商编号)
groupby名称
havingsum(数量)>
(selectsum(数量)assum
GROUPBY名称)
6.编写存储过程,计算每个学生的年龄,将其放在一个新表“学生年龄表”中。
CREATETABLE学生年龄表
(姓名VARCHAR(20)NOTNULLPRIMARYKEY,
年龄VARCHAR(20)NOTNULL
)
INSERT学生年龄表(姓名,年龄)
SELECT姓名,年龄=YEAR(GETDATE())-YEAR(出生日期)
FROM学生基本信息
SELECT*FROM学生年龄表
建立好的表