sql server 表连接
数据库操作中,我们需要的结果可能在两张表甚至多张表中,这时候就需要表连接操作,多表查询中的各个表之间的字段会存在连接,比如主外键关联,可以使用主外键来关联每张表。表连接方式有以下几种:
- JOIN: 如果表中有至少一个匹配,则返回行
- LEFT JOIN(左连接): 即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN(右连接): 即使左表中没有匹配,也从右表返回所有的行
- 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
结果如下,查询结果集返回两表的所有行。
1.本博客仅作个人生活、工作、学习等的日常记录。
2.内容有参考其他博主、网页等,有因“懒”直接粘贴来,会备注出处。若遇雷同,或忘备
注,并无故意抄袭之意,请诸“原主”谅解,很感谢您的辛勤"笔记"可供本人参考学习。
3.如遇同行,有参考学习者,因个人学识有限,不保证所写内容完全正确。您对本博文有任何
的意见或建议,欢迎留言,感谢指正。
4.若您认为本主的全博客还不错,可以点击关注,便于互相学习。
5.感谢您的阅读,希望对您有一定的帮助。欢迎转载或分享,但请注明出处,谢谢!