码迷,mamicode.com
首页 > 数据库 > 详细

sql server 表连接

时间:2019-12-07 16:11:57      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:image   mamicode   pre   存在   多表   用两个   左连接   alt   dem   

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

  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 表连接

标签:image   mamicode   pre   存在   多表   用两个   左连接   alt   dem   

原文地址:https://www.cnblogs.com/sheng518/p/12001753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!