# 1. MERGE 与 CTE 联用,WITH src AS (...)、MERGE INTO ... USING src ON ...? A CTE 不能作为 MERGE 源 B MERGE 只能对常量源 C 可用 CTE 构造 MERGE 源 ✓ 正确答案 D 与 CTE 无关
# 2. MERGE 的多分支语义,WHEN MATCHED THEN UPDATE / DELETE、WHEN NOT MATCHED THEN INSERT? A 只能有一个分支 B 不能删除 C 可组合 UPDATE/DELETE/INSERT ✓ 正确答案 D 与匹配无关
# 4. MySQL 8.0 仍无原生 MERGE,但 INSERT ... ON DUPLICATE KEY UPDATE 的等价实现? A 用 MERGE 原生支持 B 用 ON DUPLICATE KEY UPDATE ✓ 正确答案 C 无需唯一索引 D 不支持更新
# 6. PostgreSQL 15 引入原生 MERGE(之前需用 UPSERT 或 CTE 模拟)的语法与限制? A 一直原生支持 B 不能用于同步 C 无限制 D 15 引入原生 MERGE ✓ 正确答案
# 7. SQL:2003 引入 MERGE 语句的语义,源表与目标表的匹配(WHEN MATCHED / WHEN NOT MATCHED)? A 无标准 B 由 SQL:92 引入 C 由 SQL:2003 引入 ✓ 正确答案 D 仅 Oracle 定义
# 8. UPSERT 的实现模式,INSERT ... ON CONFLICT、INSERT IGNORE、REPLACE INTO、UPSERT 函数(pg)? A 各数据库语法一致 B MySQL 用 MERGE C REPLACE 是就地更新 D PostgreSQL 用 ON CONFLICT ✓ 正确答案
# 9. MERGE 中 WHEN NOT MATCHED BY SOURCE 的语义(仅 SQL Server)? A 处理目标有源无的行 ✓ 正确答案 B 处理源有目标无的行 C 所有数据库支持 D 只能 INSERT
# 10. UPSERT 中 RETURNING 的语义(PostgreSQL)? A DO NOTHING 返回冲突行 B 不返回任何行 C DO UPDATE 返回更新行 ✓ 正确答案 D 仅 MySQL 支持
# 11. INSERT ... ON DUPLICATE KEY UPDATE 在 MySQL 中的限制(需要唯一索引)? A 无冲突时更新 B 无需唯一索引 C 冲突时插入 D 依赖唯一索引检测冲突 ✓ 正确答案
# 12. MERGE INTO target USING source ON ... WHEN MATCHED THEN UPDATE 的语法? A 用 WHERE 定义匹配 B 用 ON 定义匹配条件 ✓ 正确答案 C USING 是目标 D 无子句结构
# 14. MERGE 中 WHEN MATCHED 多次定义能否区分 UPDATE 与 DELETE? A 只能有一个 B 顺序无关 C 可用条件区分 UPDATE/DELETE ✓ 正确答案 D 不能删除
# 16. MERGE 中能否使用 DELETE + INSERT 组合? A 不同行可分别 DELETE 或 INSERT ✓ 正确答案 B 同一行可同时 DELETE 和 INSERT C 不能删除 D 不能插入
# 21. REPLACE INTO 与 INSERT ... ON DUPLICATE KEY UPDATE 的差异? A 两者等价 B ON DUPLICATE 是删除+插入 C ON DUPLICATE 副作用更大 D REPLACE 是删除+插入 ✓ 正确答案
# 23. COPY 与 INSERT 的性能差异,COPY 绕开 WAL 优化的 COPY FREEZE 选项? A 标记行已冻结减少清理 ✓ 正确答案 B 增加 VACUUM 开销 C 与 INSERT 等价 D 无此选项
# 24. COPY 触发器的执行,BEFORE/AFTER ROW 触发器是否触发? A COPY 不触发任何触发器 B PG 的 COPY 触发 ROW 触发器 ✓ 正确答案 C 触发器加快 COPY D 与触发器无关
# 25. CSV 格式的选项(HEADER、QUOTE、DELIMITER、NULL STRING)? A DELIMITER 表示引用符 B NULL 不能自定义 C HEADER 表示表头 ✓ 正确答案 D 无选项可配
# 27. PostgreSQL COPY FROM/TO 的高效批量导入导出协议?二进制 TEXT/CSV 模式? A BINARY 格式最高效 ✓ 正确答案 B 只有 TEXT 格式 C 二进制格式可读 D 无法导出
# 29. MySQL 中 LOAD DATA、INSERT 多值、mysqlimport 工具的差异? A mysqlimport 底层用 LOAD DATA ✓ 正确答案 B 多值 INSERT 最快 C 两者无关 D LOAD DATA 最慢
# 30. PostgreSQL 中 pg_bulkload、pgloader、COPY 工具的性能对比? A pg_bulkload 性能最差 B pgloader 只能本地 C COPY 是标准内置加载 ✓ 正确答案 D 三者等价
# 32. 批量导入的性能优化,调整 shared_buffers、work_mem、maintenance_work_mem? A 与内存无关 B 无需调优 C 导入前建全索引更快 D 增大 maintenance_work_mem 加速索引创建 ✓ 正确答案
# 34. 数据库迁移工具,pg_dump/pg_restore、mysqldump、pgloader、AWS DMS、Debezium 的取舍? A pg_dump 用于异构迁移 B AWS DMS 是原生工具 C Debezium 是 CDC 实时同步 ✓ 正确答案 D 所有工具等价
# 37. LOAD DATA LOCAL INFILE 的安全与一致性问题,为何 LOCAL 绕过 secure_file_priv,客户端文件读取的注入风险与禁用策略? A 从服务器端读文件 B 受 secure_file_priv 限制 C 无安全风险 D 有客户端文件读取风险 ✓ 正确答案
# 47. 外部表(foreign table、file_fdw、mysql_fdw)的批量导入用法? A file_fdw 读取文件 ✓ 正确答案 B 外部表不可查询 C 无法跨库 D 与 FDW 无关
# 50. COPY 与流式导入,如何用 COPY 协议配合 pgcopydb/pg_dump 管道实现大库克隆与跨版本迁移? A 必须用中间文件 B 无法跨版本 C 用管道避免中间文件 ✓ 正确答案 D pgcopydb 不用 COPY
# 52. ETL 工具(Talend、Kettle、Airflow)与原生 COPY 的取舍? A COPY 性能高但无转换 ✓ 正确答案 B ETL 工具性能更高 C 两者等价 D COPY 有复杂转换
# 58. COPY 与事务的关系,COPY 在事务内执行时如何保证原子性,大批量导入与 WAL 写入(COPY vs INSERT)的性能差异? A COPY 非原子 B COPY 可在事务内保证原子性 ✓ 正确答案 C COPY 不可回滚 D COPY 比 INSERT 慢