MYSQL 创建唯一索引

06-01 1198阅读

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 创建唯一索引
(图片来源网络,侵删)
MYSQL 创建唯一索引
(图片来源网络,侵删)
MYSQL 创建唯一索引
(图片来源网络,侵删)
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码