PostgreSQL 唯一索引17 Mar 2025 | 5 分钟阅读 在本节中,我们将了解唯一索引的工作原理,该索引用于确保各种列中数据的唯一性。 PostgreSQL 唯一索引的示例,以及使用单列和多列 PostgreSQL 唯一索引的示例。 什么是 PostgreSQL 唯一索引?在PostgreSQL中,唯一索引用于确保一个或多个列中数据值的唯一性。 换句话说,我们可以说唯一索引是为了获得数据完整性和提高性能而生成的。它不允许我们在表中插入重复的值。 如果为一列指定唯一索引,则该列不能存储具有相似值的多行。 如果为多个列指定唯一索引,则这些列中的组合值不能在多行中复制。 并且,如果我们为特定表指定唯一约束或主键,PostgreSQL 会自动生成一个类似的唯一索引。 正如我们已经知道的,PostgreSQL 将 NULL 视为不同的值。因此,它可以在具有唯一索引的列中包含多个 NULL 值。 PostgreSQL 创建唯一索引命令的语法创建唯一索引命令的语法如下 PostgreSQL 唯一索引的示例让我们看一个示例来理解PostgreSQL CREATE 唯一索引命令的工作原理。 我们正在创建一个新表,命名为Consumer,并使用CREATE命令的帮助,并使用INSERT 命令插入一些值。 要将Consumer 表创建到组织数据库中,我们使用 CREATE 命令。 但是,在创建Consumer表之前,如果组织数据库中已经存在类似的表,我们将使用DROP TABLE 命令。 输出 执行以上命令后,我们将收到以下窗口消息:Consumer表不存在。 ![]() Consumer表包含各种列,例如consumer_id、first_name、last_name和Mobile_number列,其中consumer_id是主键列。对于Mobile_number列,我们使用了唯一约束。 因此,PostgreSQL 将创建两个唯一索引,每个列一个。 输出 执行以上命令后,我们将收到以下消息:Consumer表已成功创建到组织数据库中。 ![]() 如果我们想显示Consumer表的索引,可以使用以下命令 输出 执行以上命令后,我们将获得以下输出,其中显示了Consumer表中所有索引的详细信息。 ![]() 在 PostgreSQL 唯一索引部分,我们还将看到单列和多列索引的示例 使用单列 PostgreSQL 唯一索引的示例在下面的示例中,我们尝试使用ALTER table 命令将一个新列作为Email列添加到Consumer表中,如以下命令所示 输出 执行上述命令后,我们将收到以下消息:邮件列已成功添加到Consumer表。 ![]() 我们将为邮件列指定唯一索引,以确保所有消费者都使用不同的电子邮件,正如我们可以在以下命令中看到的那样 输出 实现以上命令后,我们将收到以下消息:已成功创建 idex_consumer_email 索引。 ![]() 成功创建特定索引后,我们将按照以下步骤进行检查 步骤 1:插入新行 首先,我们将使用 INSERT 命令的帮助将新行插入到Consumer表中,如以下命令所示 输出 实现以上命令后,我们将收到以下消息窗口,显示值已成功插入到Consumer表中。 ![]() 步骤 2:插入另一新行 现在,我们将尝试插入另一行,其邮件 ID 与 [email protected] 相同: 输出 执行以上命令后,由于邮件 ID 的重复,PostgreSQL 将引发错误,这意味着重复键值违反了唯一约束“idex_consumer_email”,因为Key (email)=([email protected]) 已经存在。 ![]() 使用多列 PostgreSQL 唯一索引的示例在下面的示例中,我们将使用 ALTER table 命令的帮助将两个新列作为地址和工作地址列添加到Consumer表中,如以下命令所示 输出 执行上述命令后,我们将收到以下消息:地址和工作地址列已成功添加到Consumer表中。 ![]() 注意:多个消费者可以拥有类似的工作地址,但他们不能拥有类似的地址,此处,地址指的是家庭住址。因此,在这种情况下,我们可以在地址和工作地址列上指定唯一索引,如以下命令所示 输出 实现以上命令后,我们将收到以下消息:已成功创建 idex_consumer_address 唯一索引。 ![]() 现在,我们将按照以下步骤测试索引的工作 步骤 1:插入新行 首先,我们将使用 INSERT 命令的帮助将新行插入到Consumer表中,如以下命令所示 输出 执行上述命令后,我们将收到以下消息窗口,显示值已成功插入到Consumer表中。 ![]() 步骤 2:插入另一新行 现在,我们将尝试插入另一行,其工作地址相同,但地址不同,正如我们可以在以下命令中看到的那样 输出 实现以上命令后,我们将收到以下消息窗口:特定值已成功插入,因为地址和工作地址列中的值组合是唯一的。 ![]() 步骤 3:再次插入另一个新行 在此步骤中,我们将插入另一新行,该行具有与Consumer表中已存在的地址和工作地址列相似的值,正如我们可以在以下命令中看到的那样 输出 执行上述命令后,由于地址和工作地址的重复,PostgreSQL 将引发错误,这意味着重复键值违反了唯一约束“idex_consumer_address”,因为Key (address, work_address)=(洛杉矶,布鲁克林) 已经存在。 ![]() 概述在PostgreSQL 唯一索引部分,我们学习了以下主题
下一个主题PostgreSQL 表达式索引 |
我们请求您订阅我们的新闻通讯以获取最新更新。