首页 > 试题广场 >

表关联时,以下哪种说法是正确的()

[单选题]
表关联时,以下哪种说法是正确的()
  • 左连接时,结果集数据的行数一定等于左表
  • 左连接时,结果集数据的行数一定等于右表
  • 右连接时,结果集数据的行数一定等于右表
  • 左连接时,结果集的行数可能大于左表的行数

基本概念回顾
选项分析
原因:在左连接中,结果集至少包含左表的所有行(即行数不小于左表行数)。但是,如果左表的一行在右表中有多个匹配行(一对多关系),结果***产生额外的行,导致行数大于左表的行数。
示例:假设左表有1行(ID:1),右表有2行(都匹配左表ID:1)。左连接后,结果***有2行(左表ID:1分别与右表的2行配对)。此时,结果集行数(2行)大于左表行数(1行)。
原因:左连接的结果集行数不取决于右表行数。右表可能行数较少,但左表的所有行都会被保留,因此结果集行数通常不等于右表行数。
示例:左表有3行,右表有2行,但只有1行匹配左表(假设左表ID:1匹配右表一行,左表ID:2和ID:3无匹配)。左连接后,结果集有3行(左表所有行都被保留,其中ID:2和ID:3对应的右表部分为NULL)。此时,结果集行数(3行)不等于右表行数(2行)。
原因:在右连接中,结果集至少包含右表的所有行(即行数不小于右表行数)。但是,如果右表的一行在左表中有多个匹配行(一对多关系),结果***产生额外的行,导致行数大于右表的行数。
示例:假设右表有1行(ID:A),左表有2行(都匹配右表ID:A)。右连接后,结果***有2行(右表ID:A分别与左表的2行配对)。此时,结果集行数(2行)大于右表行数(1行)。
原因:左连接保证左表的所有行都出现在结果集中,但如果左表的一行在右表中有多个匹配行,结果***为每个匹配生成单独的行,从而导致行数增加。因此,结果集行数可能等于左表行数(无匹配或一对一匹配时),也可能大于左表行数(一对多匹配时)。
示例:同上A选项的示例,左表1行,右表2行匹配,结果集2行 > 左表1行。

  • 左连接(LEFT JOIN):返回左表(LEFT JOIN左侧的表)的所有行,无论右表中是否有匹配的行。如果右表中没有匹配的行,则结果集中右表的部分为NULL。如果左表的一行在右表中有多个匹配行,则结果集中会生成多行(即左表的一行对应右表的多行)。

  • 右连接(RIGHT JOIN):返回右表(RIGHT JOIN右侧的表)的所有行,无论左表中是否有匹配的行。如果左表中没有匹配的行,则结果集中左表的部分为NULL。同样,如果右表的一行在左表中有多个匹配行,则结果集中会生成多行。

  • 结果集行数的影响因素:结果集的行数取决于匹配情况:

    • 如果没有多重匹配(即一对一的匹配),结果集行数可能等于左表或右表的行数。

    • 如果有多重匹配(即一对多的匹配),结果集行数会增加。

    • 如果存在不匹配的行(例如左连接中右表无匹配),结果集仍会包括左表的所有行,但行数不会减少。

A. 左连接时,结果集数据的行数一定等于左表

  • 错误

B. 左连接时,结果集数据的行数一定等于右表

  • 错误

C. 右连接时,结果集数据的行数一定等于右表

  • 错误

D. 左连接时,结果集的行数可能大于左表的行数

  • 正确


发表于 2025-07-07 21:09:30 回复(0)