SQLServer基础(六)

本文深入解析SQL中的四种表连接方式:内连接、不等值连接、交叉连接与外连接,通过具体实例详细说明每种连接的应用场景及语法使用。

 

第七章、表连接
7.1、表连接简介
     关键字Join,将多个表按照彼此间关系连接成一个结果集,结果是将多个表合成一个表输出,复合查询只能出一个表
     主流数据库支持的一般有:交叉连接cross join;内连接inner join;联合连接union join。
7.2、内连接(inner join)
     inner join 关联表名 on 连接条件,最好字段前加上表名,比较明确要显示的字段是哪一个表的,如果表名较长,可以用别名,方法是在表后面写上别名
     客户姓名为Tom的客户所下的订单:select T_Order.FNumber,T_Order.FPrice,T_Customer.FName from T_Order Inner join T_Customer on FCustomerId = T_Customer.FId where T_Customer.FName='Tom'
     别名:select o.FNumber,o.FPrice,c.FName from T_Order o Inner join T_Customer c on FCustomerId = T_Customer.FId where c.FName='Tom'
7.3、不等值连接
     连接条件:小于<,大于>,不等于<>,like,between and。
7.4、交叉连接
     交叉,是叫表中记录想结合,最后记录数为表a个数*表b个数;交叉简单,不包含on,包括:显示+隐式。
     隐式连接(数据库都支持,直接用隐式即可):只要在select语句的from语句后将要进行交叉的表名列出即可
     ex:select c.FId,c.FName,c.FAge,o.FId,o.FNumber,o.FPrice from T_Customer c,T_order o
     显示连接:cross join 类似inner join
     select c.Fid,c.Fname,c.Fage,o.FId,o.FNumber,o.FPrice from T_Customer c cross join T_order o
7.5、自连接
     在一个表内寻找数据,进行相应的比较和限制条件,达到最终的数据,方法:起代号不同。
     表与本身相连接,自连接。
     select o1.FNumber,o1.Fprice,o1.FTypeid,o2.FNumber,o2.Fprice,o2.FTypeid from T_Order o1 inner join T_Order o2 on o1.FTypeid=o2.FTypeid and o1.FId<>o2.FId
7.6、外连接
     外部连接主要就是用来解决空值匹配问题的。与内部连接几乎一样,区别就是对空值的处理,外部连接不需要两个表具有匹配记录,这样就可让表中记录总是放在结果集中。
     外部连接:右外部连接right outer join;左外部连接left outer join;全外部连接 full outer join。
     三者不同:左(右)外部连接返回左(右)表中不符合连接条件的数据;
               全部返回两个表中不符合连接条件的数据=左+右。
     join左侧的表示左表,join右侧的表示右表。
7.6.1、左外部连接(右,全一样)
     在左外部连接中,左表中所有记录都会显示在结果集中,无论是否在右表中存在匹配记录
     select o.FNumber,o.FPrice,o.FCustomerId,c.FName,c.Fage from T_Order o left outer join T_Customer c on o.FCustomerId=c.FId
7.7、联合连接union join
     一般没啥用,在一些数据库中不支持full outer join,比如MySql,就是讲左右联合起来,用union

转载于:https://www.cnblogs.com/shadow-fei/p/3543114.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值