数据库道理领导材料四
主 题:第三章 多表查询、连接查询(课件)
进修时光:2021年10月18日-10月24日
内 容:
我们这周重要进修《数据库道理》这门课程的第5章多表查询的相干内容。盼望经由过程下面的内容能使同窗们对此两种查询有更深刻的懂得。
知识要点
连接查询
笛卡尔积连接
天然连接
本身连接
外连接
复合前提连接
重点难点
笛卡尔积连接
复合前提连接
外连接
连接查询
一个查询同时涉及两个以上的表,则称之为连接查询。连接查询重要包含等值连接、非等值连接查询、本身连接查询、外连接查询跟复合前提连接查询。
等值与非等值连接查询
连接谓词:用来连接两个表的前提称为连接前提或连接谓词,其一般格局为:
[.] [.]
其中比较运算符重要有:=、>、=、<=、!=
其余连接谓词还可能利用下面情势:
[.] BETWEEN [.] AND [.]
当连接运算符为=时,称为等值连接。利用其余运算符称为非等值连接。
连接谓词中的列称号为连接字段。连接前提中的各连接字段范例必须是可比,但不必是雷同。比方,可能都是字符型,或都是日期型;也可能一个是整型,另一个是实型,整型跟实型都是数值型。
履行连接操纵的过程是,起首在表1中找到第一个元组,然后重新开端次序扫描或按索引扫描表2,查找满意连接前提的元组,每找到一个元组, 就将表1中的第一个元组与该元组拼接起来,构成成果表中一个元组。表2全部扫描结束后,再到表1中找第二个元组,然后再重新开端次序扫描或按索引扫描表2,查找满意连接前提的元组,每找到一个元组, 就将表1中的第二个元组与该元组拼接起来,构成成果表中一个元组。反复上述操纵,直到表1全部元组都处理结束为止。
例 查询每个操纵员销售图书的情况
每个操纵员的姓名等基本情况放在操纵员信息表(Operator)中、图书销售的情况存放在图书销售记录信息表(SalesRecord)中,所以本查询现实上同时涉及operator与SalesRecord两个表中的数据。这两个表之间的接洽是经由过程两个表都存在的属性操纵员账户Account实现的。要查询每个操纵员销售图书的情况,就必须将这两个表中雷同操纵员账户的元组连接起来,这是一个等值连接。在操纵时,在雷同属性名的前面必须加上各自的表名,如Operator.Account跟 SalesRecord.Account,完本钱查询的SQL语句为:
SELECT Operator.*,SalesRecord.*
FROM Operator, SalesRecord
WHERE Operator.Account = SalesRecord.Account;
连接运算中有两种特别情况,一种称为笛卡儿积连接,另一种称为天然连接。
笛卡儿积:是不带连接谓词的连接。两个表的笛卡儿积等于两表中元组的穿插乘积,也即其中一表中的每一元组都要与另一表中的每一元组作拼接,因此成果表每每很大,并且查询成果会呈现很多有意思的行,所以这种运算很少利用。
天然连接:假如是按照两个表中的雷同属性停止等值连接,且目标列中去掉落了反复的属性列,但保存了全部不反复的属性列,则称之为天然连接。
例 天然连接Operator跟SalesRecord表
SELECT Operator. Account, Name, Password , Isdeleted , Sn ,SaleDate , SumMonet
FROM Operator, SalesRecord
WHERE Operator.Account = SalesRecord.Account;
本身连接
连接操纵可能在同一张表内可停止本身连接,即将同一个表的差别行连接起来。本身连接可能看作一张表的两个正本之间的连接。在本身连接中,必须为表指定两一般号,使之在逻辑上成为两张表。
例 在BookRecord表中查询同名的作者及其所著的图书书名
SELECT a1. Author, a1. BookName
FROM BookRecord a1 join BookRecord a2 on a1. Author =a2. Author
WHERE a1. BookNO a2. BookNO
外连接
在平日的连接操纵中,只有满意符合查询前提( WHERE 查抄前提或 HAVING 前提)跟连接前提的元组才干作为成果输出,如许的连接称作内连接。假如在现实利用中,也想同时输出那些不满意连接前提的元组,这时就须要利用外连接。
外连接常用的有两种:左外连接跟右外连接,左外连接是在查询成果中包含连接表达式左边表中的不满意连接前提的元组,利用运算符“*=”;右外连接是在查询成果中包含连接表达式左边表中的不满意连接前提的元组,利用运算符“=*”。
复合前提连接
下面各个连接查询中,WHERE子句中只有一个前提,即一个连接谓词。WHERE子句中有多个前提的连接操纵,称为复合前提连接。
例 查询图书销售总金额大于3000元操纵员的操纵员帐号、姓名
SELECT Operator. Account, Name奥鹏大工答案请进:opzy.net或请联系微信:1095258436
FROM Operator, SalesRecord
WHERE Operator.Account = SalesRecord.Account;AND SalesRecord. SumMonet >3000;
连接操纵除了可能是两表连接,一个表与其本身连接外,还可能是两个以上的表停止连接,后者平日称为多表连接。
例 查询每个操纵员及其销售的的图书其及金额
SELECT Operator.Name,SalesDetail . BookName , SalesRecord .SumMonet
FROM Operator, salesDetail, SalesRecord
WHERE Operator.Account = SalesRecord.Account AND SalesRecord..Sn= salesDetail.Sn
例题
一、填空题
1、当连接运算符为()时,称为等值连接。
2、连接运算中有两种特别情况,一种称为(),另一种称为()。
3、外连接常用的有两种:()跟(),左外连接是在查询成果中包含连接表达式左边表中的不满意连接前提的元组,利用运算符()。
二、简答题
1、什么叫天然连接。
2、什么是复合前提连接。
例题答案
一、填空题
=
笛卡儿积连接 天然连接
左外连接 右外连接 “*=”
简答题
1、假如是按照两个表中的雷同属性停止等值连接,且目标列中去掉落了反复的属性列,但保存了全部不反复的属性列,则称之为天然连接。
WHERE子句中有多个前提的连接操纵,称为复合前提连接。