数据库原理实验:连接查询 - 多表查询应用实战
数据库原理实验:连接查询 - 多表查询应用实战
实验题目: 连接查询
实验目的: (1) 熟悉基本的连接查询的概念和作用; (2) 了解数据库管理系统DBMS 实现连接查询的基本方法; (3) 掌握SQL语言连接查询语句的语法和功能,掌握并熟练运用连接查询语句实现数据库的多表查询应用
实验原理: 连接查询:同时涉及多个表的查询 连接条件或连接谓词:用来连接两个表的条件
一般格式: [<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2> [<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3>
连接字段:连接谓词中的列名称 连接条件中的各连接字段类型必须是可比的,但名字不必是相同的
实验内容: 针对供应管理数据库SPJ,进行以下各种连接查询:
- 查询“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) 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) 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) 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) 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) 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) 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;
- 查询供应量在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) 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) 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) 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语句实现多表查询应用。在本次实验中,我深刻体会到了连接查询的概念和作用,了解了DBMS实现连接查询的基本方法,掌握并熟练运用连接查询语句实现数据库的多表查询应用。
在实验过程中,我首先对SPJ供应管理数据库进行了详细的了解,包括其中的表、列、数据等。接下来,我按照实验要求,通过SQL语句进行连接查询,逐步掌握了连接谓词的格式和语法,同时也深入理解了连接条件和连接字段的作用。在查询过程中,我注意到连接字段类型必须是可比的,但名字不必是相同的,这是实现连接查询的一个重要前提,需要仔细注意。
在实验过程中,我遇到了一些问题,例如查询结果不正确、SQL语句出错等,通过查找资料和反复尝试,最终成功解决了这些问题。我认为在实验中遇到问题是正常现象,重要的是要及时发现问题并积极解决,这样才能更好地掌握实验内容。
通过本次实验,我不仅掌握了连接查询的基本概念和技术,还深入了解了数据库的应用和实现原理。同时,我也意识到数据库技术在实际应用中的重要性和广泛性,这为我今后的学习和工作提供了很好的基础和启示。
总之,本次实验让我充分认识到了连接查询的重要性和实现方法,也对数据库技术有了更深入的了解。我相信这些经验和知识对我的学习和工作都将产生积极的影响。
原文地址: https://www.cveoy.top/t/topic/oiRj 著作权归作者所有。请勿转载和采集!