欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

sql server 表连接

程序员文章站 2022-11-07 19:49:37
数据库操作中,我们需要的结果可能在两张表甚至多张表中,这时候就需要表连接操作,多表查询中的各个表之间的字段会存在连接,比如主外键关联,可以使用主外键来关联每张表。表连接方式有以下几种: JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN(左连接): 即使右表中没有匹配,也从左表返回所有 ......

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

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

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

sql server 表连接

 

 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字段相同行。

sql server 表连接

 

 

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

结果如下,查询结果集只返回右表所有行,左表只返回与右表匹配行。
sql server 表连接

 

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

结果如下,查询结果集只返回左表所有行,右表只返回与左表匹配行。
sql server 表连接

 

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