数学、日期与 JSON 路径

共 67 题
#

1. DATE_ADD、DATE_SUB、INTERVAL 表达式在 MySQL 中的方言语法?

A MySQL 用 interval 函数
B MySQL 用 DATE_ADD(date, INTERVAL expr unit) 做日期加减 ✓ 正确答案
C MySQL 用 + integer 直接加天数
D MySQL 不支持日期加减
#

2. DATE_TRUNC 与 DATE_PART 在 PostgreSQL 中的日期截取与提取用法?

A DATE_TRUNC 提取字段
B DATE_TRUNC 截断到单位,DATE_PART 提取字段值,是 PostgreSQL 特有函数 ✓ 正确答案
C 两者等价
D DATE_PART 截断
#

3. 日期时间函数 NOW()、CURRENT_TIMESTAMP、CURRENT_DATE、CURRENT_TIME 在 PostgreSQL 与 MySQL 中的差异?

A PostgreSQL 中 NOW() 等价 CURRENT_TIMESTAMP 且事务内不变,MySQL 是语句时间戳,CURRENT_DATE/CURRENT_TIME 返回日期/时间 ✓ 正确答案
B NOW() 只在 MySQL 存在
C 两者都返回 NULL
D CURRENT_DATE 返回时间
#

4. 日期生成函数 generate_series(start, stop, step) 在 PostgreSQL 中的用法?

A generate_series(start, stop, step) 可生成整数或日期序列,step 控制步长,常用于日期维度 ✓ 正确答案
B 只能生成整数
C 不能指定步长
D 只能生成 1..n
#

5. 日期算术,date + integer、date - date、date + interval 的内部存储(自 Unix 纪元起的偏移)?

A date + integer 加小时
B date 存为字符串
C date 加减整数加秒
D PostgreSQL date 存为天数偏移,date+integer 加天、date-date 返回整数天、date+interval 得 timestamp ✓ 正确答案
#

6. DATEDIFF、DATE_DIFF 函数在 MySQL/SQL Server/PostgreSQL 中的差异?

A 所有数据库相同
B PostgreSQL 有 DATEDIFF
C MySQL DATEDIFF 返回天数,SQL Server DATEDIFF(unit,start,end) 指定单位,PostgreSQL 无 DATEDIFF 用减法 ✓ 正确答案
D SQL Server 无单位参数
#

7. 数学函数 ROUND、CEIL、FLOOR、TRUNC 在负数与零上的处理差异?

A CEIL 向负无穷
B FLOOR 向零
C FLOOR 向下取整(-1.5→-2),TRUNC 向零截断(-1.5→-1),CEIL 向上(-1.5→-1),ROUND 四舍五入 ✓ 正确答案
D TRUNC 向下
#

8. PostgreSQL 中 to_char、to_date、to_timestamp 的格式化字符串?

A to_char 格式化输出,to_date/to_timestamp 解析字符串,格式模板如 YYYY-MM-DD HH24:MI:SS ✓ 正确答案
B to_date 把值格式化为字符串
C to_timestamp 格式化
D 格式模板无关
#

9. RANDOM() 在 WHERE 中使用的陷阱(每行重新计算)?

A RANDOM() 在 WHERE 中只算一次
B RANDOM() 每行重算导致结果不稳定 ✓ 正确答案
C RANDOM() 是 immutable
D RANDOM() 不能用于 WHERE
#

10. 三角函数 SIN、COS、TAN 的弧度制?

A SIN/COS/TAN 用弧度制,角度需用 RADIANS() 转换 ✓ 正确答案
B SIN 用角度制
C 三角函数不用参数
D 三角函数已废弃
#

11. 对数函数 LOG、LN、LOG10 的差异?

A LN 以 10 为底
B LN 自然对数、LOG10 以 10 为底、LOG 默认底数因数据库而异(PostgreSQL 10,MySQL e) ✓ 正确答案
C LOG 恒以 e 为底
D LOG10 自然对数
#

12. JSON 与 JSONB 在 PostgreSQL 中的存储差异,JSONB 解析为二进制,去重键排序?

A JSON 按文本原样存储,JSONB 解析为二进制、去重键、按键排序、支持索引,性能更好 ✓ 正确答案
B 两者存储相同
C JSONB 保留原始顺序
D JSON 支持索引
#

13. JSON 修改函数 jsonb_set、jsonb_insert、jsonb_delete 的用法?

A jsonb_set 删除键
B jsonb_delete 替换
C 三者等价
D jsonb_set 按路径替换、jsonb_insert 插入、jsonb_delete 删除,路径用数组表示 ✓ 正确答案
#

14. JSON 聚合函数 json_agg、jsonb_agg、json_object_agg 的差异?

A json_agg 返回对象
B json_object_agg 返回数组
C 三者都返回数组
D json_agg/jsonb_agg 返回数组、json_object_agg 返回对象,jsonb 版本性能更好 ✓ 正确答案
#

15. JSON 路径操作符(->、->>、#>、#>>)的语义与索引支持?

A -> 返回 text
B 这些操作符都走 GIN
C -> 与 ->> 等价
D -> 返回 json、->> 返回 text、#>/#>> 按路径访问,索引需表达式索引或 GIN ✓ 正确答案
#

16. JSONB 包含(@>)、包含于(<@)、键存在(?)、任意顶层键(?|)、所有顶层键(?&)操作符的语义?

A @> 判断键存在
B ? 判断包含
C @> 包含、<@ 包含于、? 键存在、?| 任意键、?& 所有键,且 @> 与 ? 系列可走 GIN 索引 ✓ 正确答案
D @> 不能走索引
#

17. JSONB 索引(GIN on jsonb)的索引策略,jsonb_ops 与 jsonb_path_ops 的差异?

A jsonb_ops 索引键和值、支持多操作符、体积大;jsonb_path_ops 只索引路径+值、体积小、@> 快但不支持 ?/?|/?& 键存在操作符 ✓ 正确答案
B 两者等价
C jsonb_path_ops 支持所有操作符
D jsonb_ops 体积最小
#

18. JSONB 路径查询(jsonb_path_query、jsonb_path_exists)的 SQL/JSON 标准支持?

A 两者都返回布尔值
B jsonb_path_query 按 SQL/JSON 路径返回匹配值,jsonb_path_exists 返回布尔值,支持 $、.、[*]、?() 路径语法 ✓ 正确答案
C 两者都不支持路径
D jsonb_path_exists 返回数组
#

19. JSON_TABLE 函数(SQL:2016)在 PostgreSQL、MySQL、Oracle 中的实现差异?

A 所有数据库原生支持
B PostgreSQL 原生完整支持
C Oracle/MySQL 支持 JSON_TABLE,PostgreSQL 原生不支持,需用 jsonb_to_recordset 等模拟 ✓ 正确答案
D JSON_TABLE 不是标准
#

20. 如何通过 EXPLAIN 判断 JSONB 路径查询(jsonb_path_exists、@?/@> 操作符)是否命中 GIN 索引?为什么 jsonb_path_ops 策略只能加速部分路径/包含表达式?

A 无法检查
B 用 EXPLAIN 看 Index Scan/GIN 节点判断命中,jsonb_path_ops 不支持 ? 系列键存在操作符,但支持 @>、@?、@@;jsonb_path_exists 函数本身不走索引,需改写为 @? 操作符 ✓ 正确答案
C jsonb_path_ops 支持所有操作符
D 路径查询总走索引
#

21. PostgreSQL 原生并不提供 JSON_SCHEMA_VALID 函数,工程上如何借助 pg_jsonschema 扩展(jsonb_matches_schema / json_matches_schema)实现 JSON Schema 校验?

A PostgreSQL 原生支持
B 无法校验
C 需安装 pg_jsonschema 扩展,用 jsonb_matches_schema/json_matches_schema 按 JSON Schema 校验 ✓ 正确答案
D 只能外部校验
#

22. JSON 与关系表的建模取舍,何时用 JSON 列、何时拆表?

A JSON 列总是更好
B 灵活多变、低频查询用 JSON 列;结构化、高频查询、强约束用关系表,可混合建模 ✓ 正确答案
C 拆表总是更好
D JSON 列不能存储
#

23. SQL/JSON 标准(JSON_EXISTS/JSON_QUERY/JSON_VALUE 及 ERROR/NULL/EMPTY 错误处理子句)与 PostgreSQL 现有实现的主要兼容性差距有哪些?

A PostgreSQL 完整支持标准
B PostgreSQL 用 jsonb_path_* 替代 JSON_EXISTS/QUERY/VALUE,错误处理子句(ON ERROR/ON EMPTY)支持不完整 ✓ 正确答案
C 无差距
D PostgreSQL 不支持 JSON 路径
#

24. JSONB 与 HSTORE 的取舍?

A 两者等价
B JSONB 支持嵌套、数组、类型与路径查询、GIN 索引,功能强;HSTORE 是简单键值文本,功能有限 ✓ 正确答案
C HSTORE 支持嵌套
D JSONB 功能有限
#

25. JSONB 与列存储(jsonb 列存)的取舍?

A 两者等价
B JSONB 行存适合检索/更新/灵活查询,列存储适合分析/列聚合/大扫描,按场景取舍 ✓ 正确答案
C 列存适合频繁更新
D JSONB 适合分析扫描
#

26. MySQL 中 JSON_EXTRACT、JSON_OBJECT、JSON_ARRAY 的方言?

A JSON_EXTRACT 构造对象
B JSON_EXTRACT 提取路径值、JSON_OBJECT 构造对象、JSON_ARRAY 构造数组,-> 返回 JSON、->> 返回字符串 ✓ 正确答案
C 三者都提取
D -> 返回字符串
#

27. MySQL 中 JSON_TABLE 的实现差异?

A MySQL 不支持 JSON_TABLE
B JSON_TABLE 不能展开
C 与 Oracle 完全相同
D MySQL 8 的 JSON_TABLE 用 COLUMNS/PATH 定义列、支持 NESTED PATH,语法较 Oracle 简单 ✓ 正确答案
#

28. SQL Server 中 JSON_VALUE、JSON_QUERY 的差异?

A 两者等价
B JSON_QUERY 返回标量
C JSON_VALUE 返回对象
D JSON_VALUE 返回标量值,JSON_QUERY 返回 JSON 对象/数组,取嵌套结构需用 JSON_QUERY ✓ 正确答案
#

29. SQL/JSON 路径语言的数值语义(基于 IEEE 754 双精度)与 JSON 数字精度限制?

A 基于十进制定点
B 数值无限精确
C 基于 IEEE 754 双精度,大整数/高精度数字可能丢失精度 ✓ 正确答案
D 不支持数值运算
#

30. jsonb_path_query('$.a[*].b', jsonb) 的 SQL/JSON 路径语法?

A $ 表示数组
B $ 根、.a 顶层键、[*] 数组遍历、.b 属性,返回 a 数组中每个元素的 b 值 ✓ 正确答案
C [*] 表示对象
D 路径只能访问根
#

31. 如何在 JSONB 上做部分索引(partial index)?

A 部分索引无 WHERE
B 部分索引带 WHERE 条件,JSONB 上可用 @>、? 等条件限定索引范围,缩小体积 ✓ 正确答案
C 部分索引只用于普通列
D JSONB 不能建部分索引
#

32. jsonb_path_query/jsonb_path_exists 的 lax 与 strict 模式在路径缺失、类型不匹配时的行为差异是什么?

A 两者等价
B lax 宽松容错(缺失键/类型不匹配自动处理),strict 严格校验(不匹配报错),默认 lax ✓ 正确答案
C strict 容错
D 默认 strict
#

33. PostgreSQL 全文检索的两种类型,tsvector 与 tsquery 的生成与匹配?

A tsvector 是文档分词向量、tsquery 是查询,用 @@ 匹配,to_tsvector/to_tsquery 生成 ✓ 正确答案
B tsvector 是查询
C 两者用 = 匹配
D tsquery 是文档
#

34. 全文检索的权重(A、B、C、D)设置与排序,ts_rank 函数?

A tsvector 词素可带 A/B/C/D 权重(A 最高),ts_rank 计算相关度用于排序,可调整权重系数 ✓ 正确答案
B 权重 A 最低
C ts_rank 返回布尔值
D 权重不影响排序
#

35. 全文检索的索引选择,GIN on tsvector 与 GIN on to_tsvector(col) 的差异?

A 两者等价
B 表达式索引不能用于全文
C tsvector 列直接 GIN 索引,text 列需表达式索引 GIN on to_tsvector(col),查询需用相同表达式命中 ✓ 正确答案
D text 列无法建索引
#

36. 字典(text search dictionary)的语言支持,simple、english、chinese_zh 的差异?

A simple 做词干化
B 中文用 simple 即可
C english 不分词
D simple 不做处理、english 词干化+停用词、中文需专用分词字典(chinese_zh) ✓ 正确答案
#

37. 高亮(ts_headline)函数的使用与性能?

A ts_headline 返回布尔值
B ts_headline 返回高亮匹配词的片段,性能开销较高,建议在结果集较小处调用 ✓ 正确答案
C ts_headline 用于分词
D ts_headline 无性能问题
#

38. MySQL FULLTEXT 索引与 PostgreSQL GIN 的差异?

A 两者语法相同
B PostgreSQL 无全文检索
C MySQL FULLTEXT 用 MATCH AGAINST,PostgreSQL 用 GIN on tsvector + @@,分词与扩展性不同 ✓ 正确答案
D MySQL 支持中文分词
#

39. PostgreSQL 中 pg_trgm 扩展的模糊匹配与全文检索的取舍?

A pg_trgm 适合语义检索
B 两者等价
C 全文检索适合近似匹配
D pg_trgm 适合近似/子串匹配,全文检索适合关键词/语义检索,中文用全文检索分词更合适 ✓ 正确答案
#

40. 中文分词的 jieba、HanLP、IK 在 PostgreSQL 中的集成?

A PostgreSQL 原生支持中文分词
B 通过 zhparser/pg_jieba 等扩展集成 jieba 等分词库,配置为中文分词器 ✓ 正确答案
C 中文无法分词
D 用 simple 字典即可
#

41. GIN 与 GiST 索引在全文检索中的取舍?

A GIN 查询快但体积大、构建慢,GiST 体积小、构建快但查询慢且 lossy,查询优先用 GIN ✓ 正确答案
B GIN 体积小
C GiST 查询快
D 两者相同
#

42. MySQL 中 MATCH AGAINST 的语法?

A MATCH AGAINST 无需索引
B 只支持布尔模式
C MATCH(cols) AGAINST(expr) 支持自然语言/布尔/查询扩展模式,需 FULLTEXT 索引 ✓ 正确答案
D 语法是 CONTAINS
#

43. PostgreSQL 中如何配置自定义字典?

A PostgreSQL 不能自定义字典
B 用 CREATE TEXT SEARCH DICTIONARY 创建同义词/停用词/Ispell 字典,再组合成 TS CONFIGURATION ✓ 正确答案
C 只能内置
D 字典配置不影响分词
#

44. tsquery 的 to_tsquery、plainto_tsquery、phraseto_tsquery 三种构造差异?

A 三者等价
B phraseto_tsquery 用 OR
C plainto_tsquery 支持布尔
D to_tsquery 支持布尔运算符、plainto_tsquery 用 AND 连接词、phraseto_tsquery 短语顺序匹配 ✓ 正确答案
#

45. websearch_to_tsquery 的语法(PostgreSQL 11+)?

A 它不支持引号
B 它是 PostgreSQL 6 特性
C 它只支持单词
D 它支持网页风格语法:词 AND、引号短语、- 排除、OR 或,适合用户输入 ✓ 正确答案
#

46. EXTRACT(YEAR FROM ts)、EXTRACT(EPOCH FROM ts) 的语法与返回值类型?

A EXTRACT(YEAR FROM ts) 返回年份、EXTRACT(EPOCH FROM ts) 返回 Unix 纪元秒数,返回 numeric ✓ 正确答案
B EXTRACT(YEAR FROM ts) 返回时间戳
C EPOCH 返回月份
D 返回 text
#

47. 年龄计算 AGE(timestamp, timestamp) 与 EXTRACT(YEAR FROM age) 的语义?

A AGE 返回整数
B AGE 无参数
C EXTRACT 返回 interval
D AGE 返回 interval(年/月/日),EXTRACT(YEAR FROM age) 提取年数用于算整岁 ✓ 正确答案
#

48. 时区处理,TIMESTAMP 与 TIMESTAMPTZ 的存储与转换规则?AT TIME ZONE 子句的语义?

A TIMESTAMPTZ 存墙钟时间
B TIMESTAMP 涉及时区
C 两者等价
D TIMESTAMP 存墙钟时间,TIMESTAMPTZ 存 UTC 显示按会话时区,AT TIME ZONE 做时区转换 ✓ 正确答案
#

49. RANDOM()、gen_random_uuid() 的用法与性能?

A RANDOM() 返回 UUID
B 两者等价
C gen_random_uuid() 返回浮点
D RANDOM() 返回随机浮点、gen_random_uuid() 返回随机 UUID,随机 UUID 作主键会碎片化不如自增 ✓ 正确答案
#

50. CURRENT_TIMESTAMP 与 LOCALTIMESTAMP 的差异?

A CURRENT_TIMESTAMP 返回 timestamptz(含时区),LOCALTIMESTAMP 返回 timestamp(无时区) ✓ 正确答案
B 两者等价
C LOCAL 返回带时区
D 两者都无时区
#

51. TIMESTAMP 字面量与 TIMESTAMPTZ 的差异?

A 两者等价
B TIMESTAMPTZ 无时区
C 两者都存 UTC
D TIMESTAMP 字面量无时区,TIMESTAMPTZ 字面量含时区偏移存 UTC ✓ 正确答案
#

52. 时区转换 AT TIME ZONE 'Asia/Shanghai' 的语义?

A 它总是返回 timestamp
B 它不做转换
C 它总是返回 timestamptz
D timestamp AT TIME ZONE 解释为指定时区转 UTC(返回 timestamptz),timestamptz AT TIME ZONE 显示指定时区(返回 timestamp) ✓ 正确答案
#

53. jsonb_array_elements 的用法(展开数组)?

A jsonb_array_elements 把 JSONB 数组展开为多行,每行一个 jsonb 元素 ✓ 正确答案
B 它把数组聚合成一行
C 它返回 text
D 它只能用于 WHERE
#

54. ABS(-5) 的返回值?SIGN(-5) 的返回值?

A SIGN 返回绝对值
B ABS(-5)=-5,SIGN(-5)=1
C 两者都返回 5
D ABS(-5)=5,SIGN(-5)=-1 ✓ 正确答案
#

55. DATE 字面量的语法(如 DATE 'YYYY-MM-DD')?

A 语法是 DATE 'YYYY-MM-DD' ✓ 正确答案
B 语法是 DATE "YYYY-MM-DD"
C 语法是 DATE(YYYY-MM-DD)
D 无字面量语法
#

56. EXTRACT(DOW FROM date) 的返回(0=Sunday)?

A 1=Sunday
B 0=Monday
C 0=Sunday,1=Monday,...,6=Saturday ✓ 正确答案
D 返回英文星期名
#

57. POWER(2, 10) 的返回值?SQRT(2) 的浮点精度?

A POWER(2,10)=20
B POWER(2,10)=1024,SQRT(2) 是浮点近似值有精度误差 ✓ 正确答案
C SQRT(2) 精确
D 两者都返回整数
#

58. 生成序列 generate_series(1, 10) 与 generate_series(1, 10, 2) 的差异?

A 前者步长 1 生成 1..10,后者步长 2 生成 1,3,5,7,9 ✓ 正确答案
B 两者等价
C 后者步长 1
D 两者都生成偶数
#

59. jsonb_each_text 的展开用法?

A 它把数组展开
B jsonb_each_text 把 JSONB 对象展开为 (key, value) 两列多行,value 为 text ✓ 正确答案
C 它返回单行
D 它聚合对象
#

60. to_tsvector('english', 'hello world') 的返回值?

A 返回 text
B 返回 tsvector,含词素与位置(如 'hello':1 'world':2) ✓ 正确答案
C 返回数组
D 返回布尔值
#

61. ts_headline 的高亮 HTML 标签?

A 标签不可自定义
B 默认用 <mark> 标签
C 不高亮
D 默认用 <b> 标签高亮 ✓ 正确答案
#

62. MOD、%、DIV 的差异?

A MOD 求商
B MOD(a,b) 与 a%b 求余数,DIV 求整除商,MySQL 支持 DIV ✓ 正确答案
C DIV 求余数
D % 求商
#

63. NOW() 返回的事务时间戳特性?

A NOW() 是实时时钟
B NOW() 每次调用都不同
C NOW() 是事务开始时间戳,事务内不变 ✓ 正确答案
D NOW() 与 clock_timestamp() 等价
#

64. PI() 函数返回的精度?

A 返回无限精度
B 返回整数
C 返回 double 类型 π,约 3.141592653589793 ✓ 正确答案
D 返回 text
#

65. jsonb_pretty 函数的作用?

A 它返回 jsonb
B 它压缩 JSON
C jsonb_pretty 把 JSONB 格式化为缩进美观的 text,用于调试显示 ✓ 正确答案
D 它删除键
#

66. ts_rank 的参数含义?

A ts_rank 只有一个参数
B weights 是布尔值
C ts_rank(vector, query, weights) 计算相关度,weights 是 A/B/C/D 权重系数数组 ✓ 正确答案
D ts_rank 返回布尔值
#

67. tsvector 的更新触发器模式?

A 触发器用于删除
B 用 BEFORE INSERT OR UPDATE 触发器自动更新 tsvector 列,查询直接使用,避免每次分词 ✓ 正确答案
C tsvector 不能存列
D 触发器无意义