一、实验目的:
1、了解DBMS系统的功能、软件组成;
2、掌握利用SQL语句定义、和简单操纵数据库的方法。
二、实验要求:
1、基于实验一已经建立的表格练习典型的多表连接查询SQL语句
2、练习聚合函数
3、练习视图的创建查询、插入、更新、删除等操作
三、实验设备:
计算机、数据库管理系统如DB2,Oracle 等软件。
四、实验内容
根据已经创建的数据库关系表EMP+(学生自己的学号)和DEPT+(学生自己的学号)完成SQL handbook 中的老师指定的较难题目:
以下为学生实验部分,所有题目要求有语句和运行结果截屏:
2.6 列出以BLAKE为经理的员工。
这个查询使用了一个子查询来查找 "BLAKE" 的 EMPNO(员工编号),然后在主查询中使用这个 EMPNO 来查找以 "BLAKE" 为经理的员工。这将返回所有属于 "BLAKE" 管辖的员工的详细信息。
6.6 查找所有收入高于所在部门员工平均工资的员工。
这个查询首先选择了员工的编号(EMPNO)、姓名(ENAME)、薪水(SAL)和部门编号(DEPTNO),然后使用子查询计算每个员工所在部门的平均工资,并将其与员工的薪水进行比较。如果员工的薪水高于其所在部门的平均工资,他们将包括在结果中。
思考题:找出供应所有红色零部件的供应商名称。
这个查询的思路是查找所有供应商,对于每个供应商,检查是否不存在任何红色零部件,即没有红色零部件的零部件不在供应商的供应列表中。如果不存在这样的零部件,那么该供应商符合条件,并且将包括在结果中。
2.5 对于每个工资超过其经理工资的员工,列出该员工的姓名和工资以及经理的姓名和薪水。
使用自连接,将同一个表(emp2021150047)连接两次,一次用于员工信息,一次用于经理信息。然后,它筛选出员工的薪水高于其经理的薪水的行,并返回员工的姓名、薪水,以及经理的姓名和薪水。
6.3 列出与Jones有相同工作或工资高于或等于Ford的员工的姓名、职位和部门。
这个查询使用了子查询来查找 "Jones" 和 "Ford" 的工作和工资,然后在主查询中筛选出具有相同工作或工资高于或等于 "Ford" 的员工。它将返回这些员工的姓名、职位和部门。
Example 4: 获取至少提供S2提供的所有零件的供应商的编号。
这个查询的思想是使用子查询来查找S2提供的所有零件,然后再次使用子查询来检查是否没有供应商提供所有这些零件。如果没有供应商提供所有这些零件,他们就会包含在查询结果中。
五.实验心得
通过本次实验,我掌握了SQL语句的基本语法和操作方法。我学会了如何使用SQL语句来查询数据、插入新数据、更新现有数据以及删除数据。
学会了如何在SQL中执行多表连接查询,以检索相关表中的数据。多表连接查询对于处理复杂数据关系非常有用,例如查找员工和他们的经理之间的关系。
了解了聚合函数的作用和用法。这些函数用于计算数据的汇总信息,如平均值、总和、最大值和最小值。
(by 归忆)