实验四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小时内删除。
发表评论