PostgreSQL教程

PostgreSQL 唯一索引

在本节中,我们将了解 UNIQUE Index 的工作原理,该信息用于确保
PostgreSQL唯一索引的示例 ,并查看使用单列和多列的示例> PostgreSQL唯一索引。

什么是PostgreSQL唯一索引?

在 PostgreSQL ,UNIQUE索引用于确保一列或几列中数据值的唯一性。
换句话说,我们可以说生成了 Unique Index 获得数据完整性并提高性能。并且不允许我们在表中插入重复的值。
如果我们为一个列指定UNIQUE索引,则该列将无法存储具有相似内容的各种行
如果我们为多于一列指定 UNIQUE索引,那么这些列中的组合值将无法复制到各行中。
并且,如果我们为特定表指定唯一约束或主键,则PostgreSQL会自动生成类似的UNIQUE索引。
我们已经知道,PostgreSQL将NULL视为不同的值。因此,它可以在具有UNIQUE索引的列中包含多个NULL值。

PostgreSQL创建唯一索引命令的语法

用于创建唯一索引命令的语法如下:
CREATE UNIQUE INDEX index_name  
on table_name (column_name);

PostgreSQL唯一索引的示例

让我们看一个示例示例,以了解 PostgreSQL CREATE Unique Index 命令的工作。
我们正在创建命令的帮助下创建一个新表作为 消费者 ,并使用 INSERT命令。
要创建 Consumer 表进入组织数据库,我们使用 CREATE 命令。
但是,在创建 Consumer 之前表,如果表类似,我们将使用 DROP TABLE 命令 组织数据库中已经存在。
DROP TABLE if EXISTS Consumer;
输出
执行上述命令后,我们将获得以下窗口消息: Consumer 表不存在。
PostgreSQL唯一索引
Consumer 表包含各种列,例如 consumer_id,first_name,last_name 和 Mobile_number 列,其中 consumer_id 是主要键列。对于 Mobile_number 列,我们使用了 Unique约束。
因此,PostgreSQL将创建两个 UNIQUE索引 ,每列一个。
CREATE TABLE Consumer (
    consumer_id SERIAL PRIMARY KEY,
    first_name VARCHAR(255) NOT null,
    last_name VARCHAR(255) NOT null,
    Mobile_number VARCHAR(20) UNIQUE
);
输出
在执行上述命令时,我们将收到以下消息: Consumer 表具有已成功创建到 Organization 数据库中。
PostgreSQL唯一索引
如果我们要显示 Consumer 表的索引,可以使用以下命令:
SELECT tablename, indexname, indexdef 
FROM pg_indexes 
WHERE tablename = 'consumer';
输出
执行上述命令后,我们将获得以下输出,该输出在 Consumer 中显示所有索引详细信息> 表。
PostgreSQL唯一索引
在PostgreSQL唯一索引部分,我们将还要查看单列和多列索引的示例:

使用单列PostgreSQL UNIQUE索引的示例

在下面的示例中,我们正在尝试使用电子邮件列到Consumer表中ALTER表命令,如以下命令所示:
ALTER TABLE Consumer
ADD email VARCHAR(255);
输出
在执行上述命令时,我们将收到以下消息: 电子邮件列已添加到Consumer表成功。
PostgreSQL唯一索引
我们将为电子邮件列指定唯一索引,以确保所有消费者的电子邮件都不同,如下面的命令所示:
CREATE UNIQUE INDEX idex_consumer_email
ON Consumer(email);
输出
执行上述命令后,我们将收到以下消息: idex_consumer_email 索引已成功创建。
PostgreSQL唯一索引
成功创建特定索引后,我们将按照以下步骤检查以下内容:
步骤1: 插入新行
首先,我们将新行插入 Consumer表在 INSERT 命令的帮助下,如以下命令所示:
INSERT INTO Consumer(first_name, last_name, mobile_number, email)
VALUES ('Mike','Ross', '(305)-444-5432','mike@lidihuo.com');
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示值已成功插入 使用者 表。
PostgreSQL唯一索引
Step2 : 插入另一行
现在,我们将尝试插入与 mike@lidihuo.com相同的电子邮件ID的另一行:
INSERT INTO Consumer(first_name, last_name, mobile_number, email)
VALUES ('Mike','Taylor','(305)-333-9876','mike@lidihuo.com');
输出
在执行上述命令时,由于电子邮件ID 的副本,PostgreSQL将引发错误。 strong>重复的键值违反了唯一约束" idex_consumer_email" ,因为键(email)=(mike@lidihuo.com)已经存在。
PostgreSQL UNIQUE Index

使用多列PostgreSQL UNIQUE索引的示例

在以下示例中,我们将在ALTER table命令的帮助下向 Consumer 表中添加两个新列,分别为 address和work_address 列,如以下命令所示:
ALTER TABLE Consumer
ADD address VARCHAR(255),
ADD Work_address VARCHAR(200);
输出
执行上述命令后,我们将收到以下消息: 地址和工作地址。该列已成功添加到 Consumer 表中。
PostgreSQL唯一索引
注意: 几个消费者可以有一个相似的工作地址,但不能有一个相似的地址,这里的地址指的是家庭住所。
因此,在这种情况下,我们可以在 address和work_address 列上都指定UNIQUE索引,如以下命令所示:
CREATE UNIQUE INDEX idex_consumer_address
ON Consumer(address, work_address);
输出
执行上述命令后,我们将收到以下消息: idex_consumer_address 唯一索引已成功创建。
PostgreSQL唯一索引
现在,我们将按照以下步骤进行测试索引的工作方式:
第一步: 插入新行
首先,我们将在 Consumer用户中插入新行 表,其中包含 INSERT 命令的帮助,如以下命令所示:
INSERT INTO Consumer(first_name, last_name, address, work_address)
VALUES ('Olivia','Smith','Boston','Brookline');
输出
在执行上述命令时,我们将获得以下消息窗口,该窗口显示值已成功插入 使用者 表。
PostgreSQL唯一索引
Step2 : 插入另一行
现在,我们将尝试插入具有相同 work_address 和不同的 address 的另一行参见以下命令:
INSERT INTO Consumer(first_name, last_name, address, work_address)
VALUES ('Olivia','Smith','Los Angeles','Brookline');
输出
执行上述命令后,我们将获得以下消息窗口: 特定值已成功插入为 address中的值组合和work_address 列是唯一的。
PostgreSQL唯一索引
步骤3: 再次插入另一行
在此步骤中,我们将插入另一行,其地址和工作地址的值都相似我们在下面的命令中看到的 Consumer 表中已经存在的strong>列:
INSERT INTO Consumer(first_name, last_name, address, work_address)
VALUES ('William','Smith','Los Angeles','Brookline');
输出
在执行上述命令时,由于 address和work_address 的副本,PostgreSQL将引发错误。 重复的键值违反了唯一约束" idex_consumer_address" ,因为键(地址,工作地址)=(洛杉矶,布鲁克莱恩)已经存在。
PostgreSQL唯一索引

概述

在 PostgreSQL唯一索引中部分,我们已经学习了以下主题:
PostgreSQL唯一索引用于确保一列或几列中数据值的唯一性。 PostgreSQL创建唯一索引命令用于创建带有示例的唯一索引。 我们还看到了使用单列和多列 PostgreSQL UNIQUE索引的示例。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4