MYSQL 创建唯一索引

MySQL 创建唯一索引

在 MySQL 中,唯一索引(Unique Index)可以确保列中的值是唯一的,不允许重复值(NULL 除外)。以下是几种为 MySQL 表添加唯一索引的方法:

1. 创建表时添加唯一索引

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50),
    email VARCHAR(100),
    -- 单列唯一索引
    UNIQUE INDEX idx_username (username),
    -- 多列组合唯一索引
    UNIQUE INDEX idx_email (email)
);

2. 使用 ALTER TABLE 添加唯一索引

单列唯一索引

ALTER TABLE users 
ADD UNIQUE INDEX idx_username (username);

多列组合唯一索引

ALTER TABLE users 
ADD UNIQUE INDEX idx_name_email (username, email);

3. 使用 CREATE INDEX 语句添加唯一索引

CREATE UNIQUE INDEX idx_username ON users (username);

4. 添加唯一约束(会自动创建唯一索引)

ALTER TABLE users 
ADD CONSTRAINT uc_username UNIQUE (username);

注意事项

  1. 重复值处理:如果表中已有重复数据,添加唯一索引会失败

    ERROR 1062 (23000): Duplicate entry 'value' for key 'index_name'
    
  2. NULL 值处理:唯一索引允许多个 NULL 值(除非列有 NOT NULL 约束)

  3. 查看已有索引

    SHOW INDEX FROM users;
    
  4. 删除唯一索引

    ALTER TABLE users DROP INDEX idx_username;
    
  5. 性能影响:唯一索引会略微降低插入和更新速度,但能提高查询速度

实际应用示例

-- 为电商系统的商品表添加SKU唯一索引
ALTER TABLE products 
ADD UNIQUE INDEX idx_sku (sku_code);

-- 为用户表的手机号添加唯一索引(允许NULL)
ALTER TABLE users 
ADD UNIQUE INDEX idx_mobile (mobile_number);

唯一索引是保证数据完整性的重要手段,特别适用于用户名、邮箱、手机号、身份证号等需要唯一性的字段。

你可能感兴趣的:(mysql)