SQL Server表连接(Join)
Join用于根据两个或多个表之间的关系,从这些表之间查找数据。
有时候我们为了方便管理会将业务分拆成多个表,表之间用“键(key)”连接,之间存在一定的关联,比如我们有会员表专门存储会员信息,有订单表存储订单信息,但是我们要知道那些会员订购了那些商品,就需要结合两张表去查找这些信息了。
Join有四种用法:
1. inner join :内连接。能够找到两个或多个表中建立连接字段值相等的记录。没有匹配的行就不会列出。
2. left join :左连接。关键字前面是左表,后面是右表。–左连接可以得到左表所有数据,即使右表没有匹配的行。如果建立关联的字段值在右表中不存在,那么右表的数据就以null值替换。
3. right join :右连接。关键字前面的表是左表,后面的表是右表。–右连接可以得到右表所有数据,即使左表没有匹配的行。如果建立关联的字段值在右左表中不存在,那么左表的数据就以null值替换。
4. full join :可以得到左右连接的综合结果–去重复
语法
1
2
3
4
|
SELECT column_name(s)
FROM table_name1
inner|left|right|full JOIN table_name2
ON table_name1.column_name=table_name2.column_name
|
有两张表:
我们现在要获取谁订购了什么商品的数据:
inner Join代码示例
1
2
3
4
|
--我们可以用这个种方式获取
select person.Name,person.Address,orders.ordernum
from person,orders
where person.P_Id=orders.P_Id
|
使用Join实现:
1
2
3
4
|
select person.Name,person.Address,orders.ordernum
from person
inner join orders
on person.P_Id=orders.P_Id
|
left join代码示例
1
2
3
4
|
select person.Name,person.Address,orders.ordernum
from person
left join orders
on person.P_Id=orders.P_Id
|
right join代码示例
1
2
3
4
|
select person.Name,person.Address,orders.ordernum
from person
right join orders
on person.P_Id=orders.P_Id
|
full join代码示例
1
2
3
4
|
select person.Name,person.Address,orders.ordernum
from person
full join orders
on person.P_Id=orders.P_Id
|