考试报名
考试报名
考试内容
考试大纲
在线客服
返回顶部

备考刷题,请到

CDA认证小程序

SQL中有许多连接查询关键字,可以完成不同业务需求下的合并查询,下面哪些查询关键字能保留被连接两表的全部信息()
A. inner join
B. left join
C. full join
D. union all
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

full join 为横向连接,保留两张表的全部信息。union all 为纵向连接,且不去除重复记录。

### 正确答案为 **C(full join)** 和 **D(union all)**

**解析:**
题目要求:**保留被连接两表的全部信息**(即不丢失任何原始数据记录)。以下是关键分析:

1. **✅ `FULL JOIN`(C)**
- **横向连接**:通过关联键合并两表,生成包含两表所有列的结果集。
- **保留所有记录**:
- 匹配成功 → 合并为一行
- 匹配失败 → 独有记录用 `NULL` 填充
- **符合要求**:严格保留两表所有行和列的信息(如两表各有5条记录 → 结果可能为5~25条)。

2. **✅ `UNION ALL`(D)**
- **纵向堆叠**:将两表记录上下合并(需列数相同)。
- **保留所有记录**:
- 两表记录**100%完整保留**(如两表各有5条记录 → 结果必为10条)。
- 不依赖关联键,无匹配丢失风险。
- **符合要求**:以独立行的形式保留两表全部原始数据。

---

### 排除其他选项的原因:
3. **❌ `LEFT JOIN`(B)**
- 仅保留**左表全部记录** + **右表匹配记录**。
- **右表独有记录丢失**(如右表有5条未匹配记录 → 结果中这5条消失)。
- *示例*:`表A(1,2)` 与 `表B(2,3)` → 结果丢失右表的 `3`。

4. **❌ `INNER JOIN`(A)**
- 仅保留**两表匹配的记录**,两表独有记录均丢失。

---

#### 关键对比:
| 操作 | 保留左表 | 保留右表 | 保留列结构 |
|--------------|--------------|--------------|------------|
| **`FULL JOIN`** | ✅ | ✅ | 两表合并列 |
| **`UNION ALL`** | ✅ | ✅ | 单表相同列 |
| `LEFT JOIN` | ✅ | ❌ | 两表合并列 |

> **结论**:
> - 若强调 **横向连接且不丢失记录** → 仅 `FULL JOIN` 达标。
> - 若仅要求 **保留所有原始数据记录** → `FULL JOIN` 和 `UNION ALL` 均达标。
> **题目中“保留全部信息”更侧重数据完整性**,因此 **C 和 D 正确**。