在 OceanBase 数据库中,唯一索引有以下哪些特征?
A. 唯一约束即唯一索引,反之亦然
B. 包含空值,但非空值唯一
C. 全局唯一
D. 唯一索引就是主键
在 OceanBase 数据库中,唯一索引有以下哪些特征?
A. 唯一约束即唯一索引,反之亦然
B. 包含空值,但非空值唯一
C. 全局唯一
D. 唯一索引就是主键
ABC
感谢分享
感谢解答OceanBase问题!对于数据库中场景,我的经验是重点关注唯一索引有以下哪些特征配置。
学习打卡
BC?
BC
A. 唯一约束即唯一索引,反之亦然
虽然两者关系非常紧密,但严格来说,它们并不完全是同一个逻辑对象。
当你创建一个唯一约束 时,数据库为了实现这个约束,会自动创建一个对应的唯一索引 。
但是,你可以直接创建一个唯一索引 ,而不显式定义唯一约束。
在 OceanBase 的实现层面,唯一约束依赖于唯一索引,但语义上 “约束” 是逻辑规则,而 “索引” 是物理结构。因此,断言 “唯一约束即唯一索引,反之亦然” 容易引起歧义,且不完全准确。
D. 这是一个常见的混淆点,但两者有本质区别:
主键 :是约束,也是特殊的唯一索引。它必须包含非空约束 ,且在一张表中只能有一个。
唯一索引 :允许列包含 NULL 值,且在一张表中可以存在多个。
主键一定具有唯一性,但唯一索引不一定是主键。
ABC选项吧
BDBD
厉害了
支持一下
关于OceanBase的问题,唯一约束即唯一索引确实是一个重要的考虑因素。在实际应用中,我发现反之亦然方法通常更有效。
ABC
BC
A. 唯一约束即唯一索引,反之亦然 (错误)
虽然在 MySQL 模式下,创建唯一约束通常会自动创建唯一索引,但在概念上它们是不同的。约束是逻辑规则,用于保证数据完整性;索引是物理结构,用于加速查询和辅助实现约束。特别是在 OceanBase 的 Oracle 模式下,约束和索引是独立的对象。你可以创建一个唯一约束并使用现有的非唯一索引,或者删除索引而保留约束。因此不能简单地说它们等同。
B. 包含空值,但非空值唯一 (正确)
这是 SQL 标准中唯一索引的通用行为,OceanBase都遵循这一规则。唯一索引列允许存储多个 NULL 值,因为 NULL 不等于 NULL ,但所有非 NULL 的值必须是唯一的。
C. 全局唯一 (正确)
OceanBase 是一个分布式数据库。唯一索引的核心特性是保证索引列的值在整张表(跨所有分区、所有节点)范围内是唯一的,而不仅仅是在单个分区内唯一。这是 OceanBase 分布式架构下保证数据一致性的重要特征。
D. 唯一索引就是主键 (错误)
主键是一种特殊的唯一索引,它有两个额外限制:1. 列值不能为 NULL (NOT NULL);2. 一张表只能有一个主键。而唯一索引允许 NULL 值,且一张表可以有多个唯一索引。
谢谢楼主,学习了。准备考试,发现还有好多题做不会。
打算周六考试,却发现这道题不会了
选择ABC
A. 唯一约束即唯一索引,反之亦然 在 OceanBase 中,创建唯一约束时会自动生成对应的唯一索引;而创建唯一索引本质上也实现了唯一约束的效果,二者在功能上等价,因此该描述正确。
B. 包含空值,但非空值唯一 OceanBase 的唯一索引允许列值为 NULL,且允许多个 NULL 存在,但所有非空的索引列值必须保持唯一,符合该描述,因此正确。
C. 全局唯一 OceanBase 默认创建的唯一索引为全局索引,可保证索引列在全表范围内的唯一性;若为局部唯一索引,则必须包含表分区键以实现分区内的唯一性,整体仍可视为全局唯一性约束,因此该描述正确。
D. 唯一索引就是主键 主键是特殊的唯一约束,要求列非空且唯一,且一个表只能有一个主键;而唯一索引允许空值,且一个表可以存在多个唯一索引,二者概念不同,因此该描述错误。
支持