📜  PostgreSQL – 唯一索引(1)

📅  最后修改于: 2023-12-03 14:45:35.237000             🧑  作者: Mango

PostgreSQL – 唯一索引

在PostgreSQL中,唯一索引用于保证数据库表中的某个列或一组列的值是唯一不重复的。与普通的索引不同,唯一索引在创建的时候要指定UNIQUE约束。

创建唯一索引

在创建表的时候,可以使用以下语法来创建唯一索引:

CREATE TABLE table_name (
    column1 datatype NOT NULL,
    column2 datatype NOT NULL,
    ...,
    CONSTRAINT constraint_name UNIQUE (column1, column2, ...));

或者:

CREATE TABLE table_name (
    column1 datatype CONSTRAINT constraint_name UNIQUE NOT NULL,
    column2 datatype NOT NULL,
    ...);

这里, CONSTRAINT 是关键字,指示我们要创建一个完整性约束。constraint_name 是我们给这个约束取的名字。

示例

让我们以一个示例来说明唯一索引的用法。以下是一个名为 employees 的表,其中包含了 idnameemail 这三个字段。我们希望在 email 字段上创建一个唯一索引:

CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL,
    CONSTRAINT email_unique UNIQUE (email)
);

现在,我们可以插入一些测试数据并查询:

INSERT INTO employees (name, email) VALUES
    ('John Doe', 'john@example.com'),
    ('Jane Doe', 'jane@example.com'),
    ('Bob Smith', 'john@example.com');

第三个插入语句应该失败,因为它的 email 值已经存在了。我们可以使用以下语句来验证:

SELECT * FROM employees;
删除唯一约束

如果我们想要删除唯一索引怎么办?可以使用以下语句:

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

例如,我们可以通过以下方式删除之前创建的 email_unique 约束:

ALTER TABLE employees DROP CONSTRAINT email_unique;
总结

在PostgreSQL中,唯一索引可以保证表中的某个列或一组列的值是唯一不重复的。创建唯一索引的时候要指定UNIQUE约束,可以在创建表的时候或者后期使用ALTER TABLE语句进行创建或删除。唯一索引对于保证数据的唯一性非常重要,建议在设计表的时候考虑是否需要使用唯一索引。