数据库原理实验 - 连接查询

实验题目: 连接查询

实验目的:

  1. 熟悉基本的连接查询的概念和作用;
  2. 了解数据库管理系统DBMS实现连接查询的基本方法;
  3. 掌握SQL语言连接查询语句的语法和功能,掌握并熟练运用连接查询语句实现数据库的多表查询应用

实验原理:

  • 连接查询:同时涉及多个表的查询
  • 连接条件或连接谓词:用来连接两个表的条件
    • 一般格式:
      • [<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2>
      • [<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3>
  • 连接字段:连接谓词中的列名称
  • 连接条件中的各连接字段类型必须是可比的,但名字不必是相同的

实验内容: 针对供应管理数据库SPJ,进行以下各种连接查询:

  1. 查询'S001'号供应商的供应信息(结果含供应商名、项目名、零件名、供应量); (1) SQL语言:
SELECT s.sname, j.jname, p.pname, spj.qty
FROM spj, s, p, j
WHERE spj.sno = 'S001' AND spj.sno = s.sno AND spj.pno = p.pno AND spj.JNO = j.jno;
  1. 查询'北京'的供应商的供应信息(结果含供应商名、项目名、零件名、供应量); (1) SQL语言:
SELECT s.sname, j.jname, p.pname, spj.qty
FROM spj, s, p, j
WHERE s.city = '北京' AND spj.sno = s.sno AND spj.pno = p.pno AND spj.JNO = j.jno;
  1. 查询颜色为'红'色的零件供应信息(结果含供应商名、项目名、零件名、供应量); (1) SQL语言:
SELECT s.sname, j.jname, p.pname, spj.qty
FROM spj, s, p, j
WHERE p.color = '红' AND spj.sno = s.sno AND spj.pno = p.pno AND spj.JNO = j.jno;
  1. 查询供应工程'长春一汽'零件的供应商信息; (1) SQL语言:
SELECT DISTINCT s.sno, sname, stat, s.city
FROM spj, s, j
WHERE j.jname = '长春一汽' AND spj.sno = s.sno AND spj.JNO = j.jno;
  1. 查询供应工程'长春一汽'零件'螺母'的供应商信息; (1) SQL语言:
SELECT s.sno, sname, stat, s.city
FROM spj, s, p, j
WHERE j.jname = '长春一汽' AND p.pname = '螺丝刀' AND spj.sno = s.sno AND spj.JNO = j.jno AND p.pno = spj.pno;
  1. 查询'螺丝刀'零件的供应信息(结果含供应商名、项目号、零件号、供应量); (1) SQL语言:
SELECT s.sname, j.jno, p.pno, spj.qty
FROM spj, s, p, j
WHERE p.pname = '螺丝刀' AND spj.sno = s.sno AND spj.JNO = j.jno AND p.pno = spj.pno;
  1. 查询'北京启明星'供应商的供应信息(结果含供应商名、项目号、零件号、供应量); (1) SQL语言:
SELECT s.sname, j.jno, p.pno, spj.qty
FROM spj, s, p, j
WHERE s.sname = '北京启明星' AND spj.sno = s.sno AND spj.JNO = j.jno AND p.pno = spj.pno;
  1. 查询供应量在200和400之间的供应信息(结果含供应商名、项目名、零件名、供应量); (1) SQL语言:
SELECT s.sname, j.jname, p.pname, spj.qty
FROM spj, s, p, j
WHERE (spj.qty BETWEEN 200 AND 400) AND spj.sno = s.sno AND spj.JNO = j.jno AND p.pno = spj.pno;
  1. 查询两个供应量最大的供应信息(结果含供应商名、项目名、零件名、供应量); (1) SQL语言:
SELECT s.sname, j.jname, p.pname, spj.qty
FROM spj, s, p, j
WHERE spj.sno = s.sno AND spj.JNO = j.jno AND p.pno = spj.pno
ORDER BY spj.qty DESC LIMIT 2;
  1. 查询使用'天津'供应商供应的零件的工程信息; (1) SQL语言:
SELECT DISTINCT j.jno, j.jname, j.city
FROM spj, s, j
WHERE s.city = '天津' AND spj.sno = s.sno AND spj.JNO = j.jno;
  1. 查询使用工程'长春一汽' 的零件的工程的供应商信息。 (1) SQL语言:
SELECT DISTINCT s.sno, sname, stat, s.city
FROM spj, s, j, p
WHERE spj.sno = s.sno AND spj.pno = p.pno AND p.pno IN(
  SELECT DISTINCT p.pno
  FROM spj, s, j, p
  WHERE j.jname = '长春一汽' AND spj.jno = j.jno AND spj.pno = p.pno
);

实验心得与总结

本次数据库原理实验是关于连接查询的实验。通过这次实验,我对连接查询有了更深刻的理解,也更加熟练地掌握了SQL语言连接查询语句的语法和功能。

在实验过程中,我先了解了连接查询的概念和作用,以及连接条件和连接字段的定义和使用方法。然后,根据实验题目,我使用了多种查询语句进行了连接查询,包括查询供应商的供应信息、查询颜色为'红'色的零件供应信息、查询供应工程'长春一汽'零件的供应商信息等等。在编写过程中,我遇到了一些问题,例如语法错误、查询结果不符合预期等等,但通过调试和修改,最终成功地完成了所有查询任务。

通过这次实验,我深刻理解到了连接查询的重要性和灵活性。连接查询可以同时涉及多个表的数据,实现了数据的高效利用和统计。在实际应用过程中,连接查询还可以根据需要进行多表联接、过滤、排序等操作,满足不同的查询需求。而在编写查询语句时,需要注意语法的正确性、连接条件和连接字段的选择、查询结果的处理等方面,这些都需要我们进行认真思考和实践。

总的来说,本次实验不仅增强了我对数据库的理解和应用能力,也让我更加深入地认识到了实践对于学习的重要性。我相信通过不断的实践和探索,我会在数据库领域有更深入的发展和突破。


原文地址: https://www.cveoy.top/t/topic/oiRu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录