表连接是一种通过关联多个表来检索所需数据的方法。让我们通过代码示例来学习如何使用sql表连接。
实际项目,有多个表。不可能在一个表中检索所有数据。如果没有表连接,那么我们需要大量的操作。比如你需要从表A中找出限制条件来从表b中检索数据,不仅需要分多个表来操作,而且效率很低。比如书中的例子:复制代码如下:select FID from t _ customer其中fname= Mike
此SQL语句返回2,即名为MIKE的客户的FId值为2,这样您就可以在T_Order中检索到FCustomerId等于2的记录:
复制代码如下:select fnumber,fpricefrom t _ order其中fcustomerid=2
让我们仔细看看表连接。有许多不同类型的表,包括交叉连接、内部连接和外部连接。
(1) INNER JOIN: inner join合并两个表,只获取满足两个表的连接条件的数据。复制的代码如下:select o.fid,o.fnumber,o.fprice,c.fid,c.fname,c . fage from t _ order o join t _ customer con o . f customerid=c . FID
注意:在大多数数据库系统中,内部连接是可选的,内部连接是默认的连接方法。
使用表连接时,并不局限于只连接两个表,因为很多情况下需要连接很多表。例如,T_Order表还需要连接T_Customer和T_OrderType表来检索所需的信息。只需写以下SQL语句:复制代码如下:select o.fid,o.fnumber,o.fprice,c.fid,c.fname,c . fage from T _ Order o JOIN T _ Customer cON o . FCustomerId=c . FID inner JOIN T _ Order type on T _ Order。FTypeId=T_OrderType。桅栓
(2)交叉连接:交叉连接涉及的所有表中的所有记录都包含在结果集中。定义交叉连接有两种方式,即隐式和显式。
看下面这个隐含的例子:复制代码如下:select t _ customer.fid,t _ customer.fname,t _ customer.fage,t _ order.fid,t _ order.fnumber,t _ order.fpricefrom t _ customer,t _ order。
要使用显式连接,您需要使用交叉连接。示例如下:
复制以下代码:select t _ customer.fid,t _ customer.fname,t _ customer.fage,t _ order.fid,t _ order.fnumber,t _ order . fprice from t _ customer cross join t _ order。
(3)外连接:内连接只获取符合连接条件的数据,外连接主要解决这样的场景。将检索符合条件的数据。这是毫无疑问的。外部连接还会检索另一部分数据,即不满足条件的数据用NULL填充。让我们来看看外连接的分类:左外连接、右外连接和全外连接。
I .左外连接:如前所述,不满足条件的数据将用NULL填充。那么哪些需要用NULL填充呢?对于左外连接,在连接条件中,如果左表和右表中的数据没有对应的匹配,则对应的右表字段需要填充空值。也就是说,左外接的主体是左表和右表来配合。
复制的代码如下:select o.f number,o.f price,o.fcustomerid,c.fname,c.fagefrom t _ order oleft外连接t _ customer con o . f customerid=c . FID
注意:如果使用左外连接,不一致的数据可以通过where语句过滤掉。
复制的代码如下:select o.fnumber,o.fprice,o.fcustomerid,c.fname,c.fage from t _ order oleft外连接t _ customer con o . f customerid=c . FID where o . f price=150。
二。右外连接:右外连接与左外连接相反,左表中的字段将用空值填充。也就是说,右外接的主体是右表和左表来配合。
复制代码代码如下:SELECT o.FNumber,o.FPrice,o.FCustomerId,c.FName,c . fage from T _ Order origing OUTER JOIN T _ Customer cON o . f customerid=c . FId
注:同左外连接一样,可以使用在哪里语句进行过滤
三、全外部连接(完全外部联接):全外部连接是左外部连接和右外部连接的合集。也就是既包括左外部连接的结果集,也包括右外部连接的结果集。
复制代码代码如下:从所有外部连接的T _ Order中选择o.FNumber,o.FPrice,o.FCustomerId,c.FName,c . fage T _ Customer cON o . f customerid=c . FId
其结果相当于:
复制代码代码如下:从T_Order oLEFT中选择o.FNumber、o.FPrice、o.FCustomerId、c.FName、c . FName外部联接T _客户编号customerid=c . FId