一、相关知识点
数据库连接是指在关系数据库中,通过使用一个或多个共同的列(即关键字),将两个或多个表中的行组合起来,形成一个容纳这些数据的大表。其中,等值连接是基于两个或多个表中的共同值进行的,只返回那些在两个表中都存在的数据;而外连接则会返回某个表中所有的数据,以及与之匹配的那些在另一个表中存在的数据。左外连接和右外连接则分别指的是返回左表或右表所有数据,以及与之匹配的另一个表中的数据。
二、软件版本
Microsoft SQL Server Management Studio(v18.7.1)
三、实验所用数据库
实验所基于的销售管理数据库中涉及以下表:
四、实验内容
1、连接查询
(1)查询“国皓科技有限公司”的订单信息
(2)查询“三川实业有限公司”订购的商品信息,输出字段为: CompanyName,ProductName,Price,SellOrderNumber。
(3) 查询各公司各种商品的订单数量,输出字段为:CompanyName,ProductName,订单数量,按照订单数量升序排列。
(4) 查询各公司各种商品的订货总量、总金额。输出字段为:CompanyName,ProductName,订货总量,总金额。按照总金额降序排列。
2、自身连接
(1)查询和“章宏”同一部门的员工号,员工姓名。
(2)查询既订购过3号产品,又订购过4号产品的客户号。
3、外连接
(1)查询没有接收到订单的员工姓名。
(2)查询没有任何订购信息的客户公司名。
(3)查询没有被订购的商品名称。
五、实验过程及数据记录
1、连接查询
(1)查询“国皓科技有限公司”的订单信息
(2)查询“三川实业有限公司”订购的商品信息,输出字段为: CompanyName,ProductName,Price,SellOrderNumber。
(3) 查询各公司各种商品的订单数量,输出字段为:CompanyName,ProductName,订单数量,按照订单数量升序排列。
(4) 查询各公司各种商品的订货总量、总金额。输出字段为: CompanyName,ProductName,订货总量,总金额。按照总金额降序排列。
2、自身连接
(1)查询和“章宏”同一部门的员工号,员工姓名。
(2)查询既订购过3号产品,又订购过4号产品的客户号。
3、外连接
(1)查询没有接收到订单的员工姓名。
(2)查询没有任何订购信息的客户公司名。
(3)查询没有被订购的商品名称。
六、实验小结
1、普通连接的条件写在where短语中,而外连接的条件写在from短语中。
2、左外连接保留左侧表中的悬浮元组,而右外连接保留右侧表中的悬浮元组。一般查询要求中含有“没有……”之类的语句就需要考虑外连接和‘XX is null’一起使用。
3、在进行连接时,要想象连接之后的表。我认为,连接操作就是将两个关系的笛卡儿积中满足条件的元组保留,其他的舍弃。外连接还保留了部分悬浮元组,左外连接只保留了左边关系中的悬浮元组,右外连接只保留了右边关系中的悬浮元组。
4、如果需要对同一个表进行两次查询操作,就可以考虑自身连接。
5、数据库查询中需要用到的连接多为等值连接。