测验:关系模型
为什么 WHERE email = NULL 不返回任何行?
- 因为电子邮件列中没有 NULL 行。
- = NULL 是语法错误,因此条件被完全忽略。
- 这是因为与NULL比较的结果非真非假,未知,所以没有通过WHERE。
- 因为NULL会自动转换为空字符串。
count(*) 和 count(email) 有什么区别?
- 在任何数据中,两者总是返回相同的值。
- count(*) 统计行数,count(email) 统计email 不为NULL 的行数。
- count(email) 总是更快,因为它只读取索引
- count(*) 计算删除重复项的唯一行数
即使我决定使用代理键,为什么也必须保留自然键作为唯一约束?
- 即使有代理键,根据域规则不应该重复的值仍然不能重复。
- 因为性能更快
- 因为不能使用外键
- 这是因为代理键本身无法识别行。
在金额列中使用双精度时会出现什么问题?
- 存储空间大于数字
- 无法创建索引
- 没有排序
- 浮点数是近似值,因此总和或舍入结果可能与会计不一致。
将域规则转移到数据库约束而不是应用程序的最大原因是什么?
- 因为代码比较短
- 这是因为约束会自动创建索引。
- 这是因为它会阻止手动 SQL、批处理脚本以及稍后在操作过程中附加的其他服务。
- 因为约束不会影响性能
PostgreSQL中选择timestamp和timestamptz的正确标准是什么?
- timestamptz具有较大的存储空间,因此只有在绝对必要时才使用它。
- Timestamptz用于指向某个时刻的值,而timestamp仅用于与时区无关的挂钟值。
- 两者是相同的,因此您可以使用其中之一。
- 时间戳是标准,所以总是使用它