插件窝 干货文章 SQL 如何添加唯一约束列

SQL 如何添加唯一约束列

约束 唯一 添加 TABLE 302    来源:    2025-03-29

在SQL中添加唯一约束列的方法

在SQL中,可以通过以下几种方式为列添加唯一约束(UNIQUE constraint),以确保该列中的所有值都是唯一的。

1. 创建表时添加唯一约束

方式一:列级约束

CREATE TABLE 表名 (
    列1 数据类型,
    列2 数据类型 UNIQUE,
    ...
);

方式二:表级约束

CREATE TABLE 表名 (
    列1 数据类型,
    列2 数据类型,
    ...,
    UNIQUE (列名)
);

方式三:命名唯一约束

CREATE TABLE 表名 (
    列1 数据类型,
    列2 数据类型,
    ...,
    CONSTRAINT 约束名 UNIQUE (列名)
);

2. 修改现有表添加唯一约束

方式一:ALTER TABLE 添加约束

ALTER TABLE 表名
ADD UNIQUE (列名);

方式二:ALTER TABLE 添加命名约束

ALTER TABLE 表名
ADD CONSTRAINT 约束名 UNIQUE (列名);

3. 添加复合唯一约束(多列组合唯一)

ALTER TABLE 表名
ADD CONSTRAINT 约束名 UNIQUE (列1, 列2);

示例

-- 创建表时添加唯一约束
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    email VARCHAR(100),
    CONSTRAINT uq_email UNIQUE (email)
);

-- 修改现有表添加唯一约束
ALTER TABLE products
ADD CONSTRAINT uq_product_code UNIQUE (product_code);

-- 添加复合唯一约束
ALTER TABLE orders
ADD CONSTRAINT uq_customer_product UNIQUE (customer_id, product_id);

注意事项

  1. 唯一约束允许NULL值(除非该列同时有NOT NULL约束)
  2. 一个表可以有多个唯一约束
  3. 主键约束(PK)自动包含唯一约束的特性
  4. 添加唯一约束时,如果现有数据违反唯一性,操作将失败
  5. 在MySQL中,唯一约束会自动创建索引

如需删除唯一约束,语法因数据库系统而异: - MySQL: ALTER TABLE 表名 DROP INDEX 约束名; - SQL Server/Oracle: ALTER TABLE 表名 DROP CONSTRAINT 约束名;