PostgreSQL 唯一约束
在本节中,我们将了解PostgreSQL UNIQUE 约束的工作原理,该约束用于确保表的列中的所有值都是互斥的。
PostgreSQL唯一约束示例,如何在多列上创建唯一约束,使用唯一索引添加唯一约束,以及如何删除特定表的唯一约束。
什么是 PostgreSQL 唯一键约束?
在PostgreSQL中,UNIQUE CONSTRAINT用于维护我们存储到表的字段或列中的值的个性。它兼容一组列约束或列约束和一个表约束。
当我们使用唯一约束时,一个或多个列的索引会自动生成。如果我们将两个不同的空值添加到不同行的列中,它不会中断 UNIQUE 约束的规范。
有时候,如果我们要保证存储在一列或多列中的值在整个表中是唯一的,那么一列就不能存储重复的值。
例如
- 客户的电话号码应该是客户中的唯一列
- 卷号和电子邮件地址应该是学生中的唯一列
当我们使用UNIQUE 约束时,每次我们插入一个新行时,它都会检查该值是否已经在表中,如果该值已经存在则拒绝修改并引发错误。更新当前数据时将遵循类似的步骤。
为什么我们需要在 PostgreSQL 中使用 Unique 约束
- 唯一约束可以将空值包含到表中。
- 为了避免两条记录将相同的值存储到列中,唯一约束非常有用。
- 它还使用外键来维护表的唯一性。
- 在 PostgreSQL 中,唯一约束仅包含不同的值,这可以保持数据库的可靠性和完整性,以便以有组织的方式检索信息。
唯一约束 VS 主键
唯一约束和主键的主要区别如下:
Unique Constraint | Primary Key |
---|---|
如果值的组合是唯一的,则与唯一约束相关的一些字段可以具有空值。 | 与主键相关的字段都不能包含空值。 |
如何在 PostgreSQL 中创建唯一约束
我们可以在以下命令的帮助下创建PostgreSQL 唯一约束:
- 创建表命令
- 更改表命令
现在,我们正在详细讨论这两个命令。
使用 CREATE TABLE 命令创建唯一约束
在 PostgreSQL 中,我们可以在CREATE TABLE 命令的帮助下生成一个唯一约束。
创建唯一约束的语法
第一种语法用于为表中的一列创建唯一约束:
CREATE TABLE table_name(
col1 datatype,
col2 datatype UNIQUE,
...
);
我们可以使用第二个插图为表中的多个列创建唯一约束:
CREATE TABLE table_name(
col1 col_definition,
col2 col_definition,
...
[CONSTRAINT constraint_name]
UNIQUE(column_name(s))
);
在上面的语法中,我们使用了以下参数,我们在下表中进行了讨论:
参数名称 | 描述 |
---|---|
Table_name | 这是我们要创建的表的名称。 |
column1, column2 | 这些是我们在表中创建的列。 |
constraint_name | constraint_name 参数用于指定唯一约束的名称。 |
Column_name(s) | 这些是将成为唯一约束的列。 |
使用 Create 命令的 PostgreSQL 唯一约束示例
要了解PostgreSQL 唯一约束的工作原理,我们将看到以下示例。
在下面的示例中,我们创建了一个名为Customers的新表,其中包含多个列,例如Customer_ID、Customer_name、Address和email_ID。
而email_id是Unique列,对Customer表中的email id进行唯一分类。
CREATE TABLE Customers (
Customer_id SERIAL PRIMARY KEY,
Customer_name VARCHAR (25),
Address VARCHAR(25),
email_id VARCHAR (50),
UNIQUE (email_id)
);
执行上述命令后,我们会得到如下消息窗口,显示Customers表已成功创建到jtp数据库中。
CREATE TABLE Customers (
Customer_id SERIAL PRIMARY KEY,
Customer_name VARCHAR (25),
Address VARCHAR(25),
email_id VARCHAR (50) UNIQUE
);
成功创建新表作为Customers后,我们将在INSERT命令的帮助下向其中输入一些值。
INSERT INTO Customers(Customer_name, Address, email_id)
VALUES ('Chris Johnson', 'Los Angeles', 'Chris11@javatpoint.com'),
(' Daniel Rodriguez', 'San Diego', 'Rodriguezdan25@javatpoint.com'),
('Isabella Smith', 'Dallas', 'Smithisa444@javatpoint.com'),
('Penelope Brown', 'Seattle', 'Penelope194@javatpoint.com');
执行上述命令后,我们将得到以下消息窗口,其中显示四个值已成功插入到Customers表中。
现在,我们将在Customers表中插入另一行具有重复email_id 的行,如下面的语句所示:
INSERT INTO Customers(Customer_name, Address, email_id)
VALUES ( 'Savannah Smith', 'Boston', 'Smithisa444@javatpoint.com');
执行完上面的insert命令后,PostgreSQL报错,如下:
错误:重复键值违反唯一约束“customers_email_id_key”详细信息:键 (email_id)=( Smithisa444@javatpoint.com ) 已经存在。
热门文章
优秀文章