实验四SQL多表查询
学号
 
姓名
 
同组人
 
实验项目
SQL多表查询
实验地点
   
实验仪器台号
 
指导教师
   
实验日期及节次
    年 月  日,第    节
一、实验要求
1. 实验目的
理解二个数据表进行自然连接操作的前提条件。
掌握多数据表导航编写方法;
子查询的应用需求;
子查询的设计;
数据更新和数据定义;
2. 实验准备
(1)登陆毕博教学网站(210.35.204.159/);(2)选择“数据库应用”课程;(3)选择“按周编制的教学安排”后,再选择“第四周”;(4)下载“实验”和“数据库样例”。
3. 实验步骤
第一部分实验
打开“教学管理数据库”,完成教科书中的下列例子。
【例3-35】不关心课程,求成绩在85分以上人的学号、姓名和成绩。
【例3-36】将“学生表”、“成绩表”和“课程表”进行自然连接,求结果。
【例3-37】求“杨小建”的成绩表。
【例3-38】求会计学081班的所有成绩单。
第二部分实验
打开“图书管理”数据库,完成下列工作。
已知一个图书管理信息系统,其数据表间约束如下图所示,各个数据表的数据类型如上题表所示。
编写SQL完成下列功能。
1.求借阅了作者中包含“洪应明”三个字的读者姓名工作单位。
2.求读者“欧阳宇玉”借阅的书名。
3.求“借阅表”中“超期天数”不为0的所有读者姓名及所在单位。
4. 求在“借阅表”中“超期天数”不为0的每个单位人数。
4. 求在“借阅表”中“超期天数”不为0的读者人数大于5的单位名称。
二、实验过程(步骤、记录、数据和分析)
请将第二部分实验步骤中的SQL语句和实验结果使用截图方式记录。
第二部分实验
1.求借阅了作者中包含“王勇军”三个字的读者姓名工作单位。(把“洪应明”改为“王勇军”)
SELECT 读者表.姓名, 读者表.单位
FROM 读者表
WHERE 姓名 = "王勇军";
2.求读者“欧阳宇玉”借阅的书名。
SELECT 读者表.姓名, 图书表.书名
FROM (读者表 INNER JOIN 借阅表 ON 读者表.证件号=借阅表.证件号)
INNER JOIN (图书条码表 INNER JOIN 图书表 ON 图书条码表.索书号=图书表.索书号)
ON 借阅表.条码号=图书条码表.条码号
sql约束条件大于0WHERE 读者表.姓名="欧阳宇玉";
3.求“借阅表”中“超期天数”不为0的所有读者姓名及所在单位。
SELECT distinct 读者表.姓名,读者表.单位
from 读者表,借阅表
where 借阅表.超期天数<> 0;
4. 求在“借阅表”中“超期天数”不为0的每个单位人数。
select 读者表.单位,count(读者表.单位)
from 读者表
where 读者表.单位 in (SELECT 读者表.单位
                      from 读者表,借阅表
                      where 借阅表.超期天数<> 0)
group by 单位;
5.求在“借阅表”中“超期天数”不为0的读者人数大于5的单位名称。
select 读者表.单位,count(读者表.单位) as 单位人数
from 读者表
where 读者表.单位 in (SELECT 读者表.单位
                      from 读者表,借阅表
                      where 借阅表.超期天数<> 0)
group by 单位
having count(读者表.单位) > 5;
三、结论
多表查询中,对出现在from子句中的数据表有什么要求。
From子句中,表与表之间要存在自然连接,即两表之间必须有主外键的约束,也就是说两表中要有共同的字段(或字段集),该字段或字段集在一个表中为主键,在另一个表中为外键。
四、指导教师评语及成绩
   
成绩:  指导教师签名: 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。