实验二 连接查询

一、实验目的

掌握涉及一个以上数据表的查询方法。

二、实验内容

1、连接查询

  • 查询“国皓科技有限公司”的订单信息

    查询语句:

    SELECT *
    FROM Customer,Sell_Order
    WHERE Sell_Order.CustomerID=Customer.CustomerID AND Customer.CompanyName='国皓科技有限公司'
    

    执行结果:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aX204bu1-1654697219608)(D:\typora\Picture\image-20220503230302298.png)]

  • 查询“三川实业有限公司”订购的商品信息,输出字段为:CompanyName,ProductName,Price,SellOrderNumber。

    查询语句:

    SELECT CompanyName,ProductName,Price,SellOrderNumber
    FROM Product,Customer,Sell_Order
    WHERE Product.ProductID=Sell_Order.ProductID And Sell_Order.CustomerID=Customer.CustomerID AND Customer.CompanyName='三川实业有限公司'
    

    执行结果:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yq13172G-1654697219609)(D:\typora\Picture\image-20220503230832228.png)]

  • 查询各公司各种商品的订单数量,输出字段为:CompanyName,ProductName,订单数量,按照订单数量升序排列。

    查询语句:

    SELECT CompanyName,ProductName,COUNT(Sell_Order.SellOrderID) 订单数量
    FROM Product,Customer,Sell_Order
    WHERE Sell_Order.ProductID=Product.ProductID AND Customer.CustomerID =Sell_Order.CustomerID
    GROUP BY CompanyName,ProductName
    ORDER BY 订单数量 ASC
    

    执行结果:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yFoKf6Pz-1654697219610)(D:\typora\Picture\image-20220503231935727.png)]

  • 查询各公司各种商品的订货总量、总金额。输出字段为:CompanyName,ProductName,订货总量,总金额。按照总金额降序排列。

    查询语句:

    SELECT CompanyName,ProductName,SUM(SellOrderNumber) 订货总量,SUM(Price*SellOrderNumber) 总金额
    From Customer,Sell_Order,Product
    WHERE Customer.CustomerID=Sell_Order.CustomerID AND Sell_Order.ProductID=Product.ProductID
    GROUP BY Customer.CompanyName,Product.ProductName
    ORDER BY 总金额 DESC
    

    执行结果:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LlYv8fBP-1654697219610)(D:\typora\Picture\image-20220503232723449.png)]

二、自身连接

  • 查询和“章宏”同一部门的员工号,员工姓名。

    查询语句:

    SELECT FIRST.EmployeeID,FIRST .EmployeeName
    FROM Employee FIRST,Employee SECOND
    WHERE FIRST.DepartmentID=SECOND.DepartmentID AND FIRST.EmployeeName!='章宏'AND SECOND.EmployeeName='章宏'
    

    执行结果:

    在这里插入图片描述

  • 查询既订购过3号产品,又订购过4号产品的客户号。

    查询语句:

    SELECT DISTINCT SECOND.CustomerID
    FROM Sell_Order FIRST,Sell_Order SECOND
    WHERE FIRST.CustomerID=SECOND.CustomerID AND FIRST.ProductID=3 AND SECOND.ProductID=4
    

    执行结果:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C5OiJP49-1654697219611)(D:\typora\Picture\image-20220503234235618.png)]

三、外连接

  • 查询没有接收到订单的员工姓名。

    查询语句:

    SELECT EmployeeName 
    FROM Employee LEFT OUTER JOIN Sell_Order ON(Employee.EmployeeID=Sell_Order.EmployeeID)
    WHERE SellOrderID IS NULL
    

    执行结果:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CeRJOTFM-1654697219611)(D:\typora\Picture\image-20220503235014181.png)]

  • 查询没有任何订购信息的客户公司名。

    查询语句:

    SELECT CompanyName
    FROM Customer LEFT OUTER JOIN Sell_Order ON(Customer.CustomerID=Sell_Order.CustomerID)
    WHERE SellOrderID IS NULL
    

    执行结果:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VDGQ2Dlh-1654697219612)(D:\typora\Picture\image-20220503235352056.png)]

  • 查询没有被订购的商品名称.

    查询语句:

    SELECT ProductName
    FROM Product LEFT OUTER JOIN Sell_Order ON(Product.ProductID=Sell_Order.ProductID)
    WHERE SellOrderID IS NULL
    

    执行结果:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fzZ1tL9W-1654697219612)(D:\typora\Picture\image-20220503235626346.png)]

三、实验总结

本次实验涉及等值连接、自身连接、外连接,对于三种连接方式掌握更加熟练。学会了等值连接的方法、OUTER JOIN语句

### 数据库实验三 数据查询 为了完成数据库实验中的数据查询部分,以下是几个典型的 SQL 查询语句示例。这些例子展示了如何执行不同类型的查询操作。 #### 1. 使用 WHERE 子句进行条件筛选 当需要查找特定条件下满足要求的数据记录时,可以使用 `WHERE` 关键字来指定过滤条件: ```sql SELECT * FROM employees WHERE department_id = 5 AND salary > 3000; ``` 此命令会返回所有部门编号为5且工资大于3000元的员工信息[^1]。 #### 2. 排序结果集 通过 ORDER BY 可以按照某一列或多列对查询的结果进行升序 (ASC) 或降序 (DESC) 的排列: ```sql SELECT first_name, last_name, hire_date FROM employees ORDER BY hire_date DESC LIMIT 10; ``` 上述代码将获取最近入职的前十名员工的名字、氏以及雇佣日期,并按时间先后顺序逆向展示。 #### 3. 聚合函数的应用 聚合函数如 COUNT(), SUM(), AVG() 等用于计算一组数值型字段的相关统计量: ```sql SELECT department_id, COUNT(*) as num_employees, AVG(salary) as avg_salary FROM employees GROUP BY department_id; ``` 这段脚本能够得到各部门的人数及其平均薪资水平的信息汇总表。 #### 4. JOIN 连接多张表格 JOIN 是用来组合来自两个或多个表的数据的一种方式。这里给出一个简单的内连接实例: ```sql SELECT e.first_name, e.last_name, d.department_name FROM employees AS e INNER JOIN departments AS d ON e.department_id = d.department_id; ``` 该指令实现了从 employee 表和 department 表之间基于共同存在的 department_id 字段做关联匹配,最终输出每位雇员对应的全名及所在部门名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

czijin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值