sql server 表连接

Posted tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 表连接相关的知识,希望对你有一定的参考价值。

数据库操作中,我们需要的结果可能在两张表甚至多张表中,这时候就需要表连接操作,多表查询中的各个表之间的字段会存在连接,比如主外键关联,可以使用主外键来关联每张表。表连接方式有以下几种:

  1. JOIN: 如果表中有至少一个匹配,则返回行
  2. LEFT JOIN(左连接): 即使右表中没有匹配,也从左表返回所有的行
  3. RIGHT JOIN(右连接): 即使左表中没有匹配,也从右表返回所有的行
  4. FULL JOIN(全连接): 只要其中一个表中存在匹配,就返回行

下面用两个表演示下上面4种连接方式,两表数据为:

 

 1. JOIN连接:如果表中有至少一个匹配,则返回行

执行SQL语句:

	  SELECT 
	    stu.ID,
	    stu.StudentID,
	    stu.StudentName,
	    sco.ID,
	    sco.Score,
	    sco.StudentID      
	  FROM [BlogDemo].[dbo].[Student] stu
	  Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID

结果如下,查询结果集只返回两表匹配StudentID字段相同行。

 

 

2.LEFT JOIN(左连接): 即使右表中没有匹配,也从左表返回所有的行
执行SQL语句:

  SELECT 
	stu.ID,
	stu.StudentID,
	stu.StudentName,
	sco.ID,
	sco.Score,
	sco.StudentID      
  FROM [BlogDemo].[dbo].[Student] stu
  Left Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID

结果如下,查询结果集只返回右表所有行,左表只返回与右表匹配行。
在这里插入图片描述

 

3. RIGHT JOIN(右连接): 即使左表中没有匹配,也从右表返回所有的行
执行SQL语句:

  SELECT 
     stu.ID,
     stu.StudentID,
     stu.StudentName,
     sco.ID,
     sco.Score,
     sco.StudentID      
  FROM [BlogDemo].[dbo].[Student] stu
  Right Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID

结果如下,查询结果集只返回左表所有行,右表只返回与左表匹配行。
在这里插入图片描述

 

4. FULL JOIN(全连接): 只要其中一个表中存在匹配,就返回行
执行SQL语句:

   SELECT 
	stu.ID,
	stu.StudentID,
	stu.StudentName,
	sco.ID,
	sco.Score,
	sco.StudentID      
  FROM [BlogDemo].[dbo].[Student] stu
  FULL Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID

结果如下,查询结果集返回两表的所有行。
在这里插入图片描述

 

以上是关于sql server 表连接的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft SQL Server 代码片段收集

缺少 SQL SERVER 2014 代码片段

SQL Server 全文索引的管理

sql server 2008 在与 SQL Server 提示建立连接时出现与网络相关的或特定于实例的错误

sql server 2005实现树形菜单显示的数据库表怎么设计?

SQL server 数据库 用T-SQL语句创建以下四张表 求代码指导