在SQL Server中表之间的连接分为自然连接,内连接,外连接。
自然连接与内连接类似,唯一的区别是,内连接不会去掉重复的列,而自然连接会自动去掉重复的列,例如这里做一个简单的例子。
表SAge(cName,iAge), 表SSex(cName,bSex)
1、先进行内连接
1 select * from ssex inner join sage on ssex.cname=sage.cname
运行的结果为:
2、进行自然连接(不知道为什么我的数据库版本运行不了natural join 版本问题吧)
select * from ssex natural join sage
预期的结果应该如图:
3、进行外连接,外连接分为左外连接(left [outer] join),右外连接(right [outer] join)和全外连接(full [outer] join) tips:这里中括号[]里的内容可写可不写。
(1)A left join B 是将A的内容全列出来,满足条件的B的内容列出来,没有的地方为NULL
select * from ssex left join sage on ssex.cname=sage.cname 或者 select * from ssex left outer join sage on ssex.cname=sage.cname
运行结果均为:
(2)A right join B 是将B的内容全列出来,满足条件的A的内容列出来,没有的地方为NULL
select * from ssex right join sage on ssex.cname=sage.cname 或者: select * from ssex right outer join sage on ssex.cname=sage.cname
运行结果均为:
(3)A full join B 是将A,B的内容都列出来,满足条件的合成一行不满足条件的用NULL代替,看例子:
select * from ssex full outer join sage on ssex.cname=sage.cname 或者 select * from ssex full join sage on ssex.cname=sage.cname
运行结果为:
以上为所有的内容,不知道这样对概念有没有清晰一点呢。