大风大浪就是闯 发表于 2019-12-12 15:40:01

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 .. stu
          Join .. 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 .. stu
Left Join .. sco On sco.StudentID=stu.StudentID

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


3. RIGHT JOIN(右连接): 即使左表中没有匹配,也从右表返回所有的行
执行SQL语句:
SELECT
   stu.ID,
   stu.StudentID,
   stu.StudentName,
   sco.ID,
   sco.Score,
   sco.StudentID      
FROM .. stu
Right Join .. sco On sco.StudentID=stu.StudentID

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


4. FULL JOIN(全连接): 只要其中一个表中存在匹配,就返回行
执行SQL语句:
   SELECT
        stu.ID,
        stu.StudentID,
        stu.StudentName,
        sco.ID,
        sco.Score,
        sco.StudentID      
FROM .. stu
FULL Join .. sco On sco.StudentID=stu.StudentID

结果如下,查询结果集返回两表的所有行。

页: [1]
查看完整版本: sql server 表连接