创建唯一索引可确保数据不重复并提升查询效率。1. 使用CREATE UNIQUE INDEX语句为已有表添加,如CREATE UNIQUE INDEX idx_email ON users(email);2. 建表时通过UNIQUE KEY定义,如CREATE TABLE users(..., UNIQUE KEY uk_email (email));3. 用ALTER TABLE为现有表增加,如ALTER TABLE users ADD UNIQUE uk_username(username);4. 创建多列唯一索引保证组合唯一,如CREATE UNIQUE INDEX idx_dept_emp ON employee(dept_id, emp_code)。需确保数据无重复,否则创建失败。

在MySQL中创建唯一索引,是为了确保某列或多个列的组合数据在整个表中不重复。唯一索引不仅能提升查询效率,还能保证数据的完整性。下面介绍几种常用的创建方式。
使用CREATE UNIQUE INDEX语句
这是最直接的方法,适用于已经存在的表。语法格式如下:
CREATE UNIQUE INDEX 索引名 ON 表名(列名);
例如,在用户表users的email字段上创建唯一索引:
CREATE UNIQUE INDEX idx_email ON users(email);
这样就能防止插入重复的邮箱地址。
在建表时定义唯一索引
如果在设计表结构阶段就希望某个字段唯一,可以在CREATE TABLE语句中直接添加。示例:
CREATE TABLE users (
id INT AUTO_INCREMENT,
email VARCHAR(100) NOT NULL,
username VARCHAR(50),
UNIQUE KEY uk_email (email)
);
这里的uk_email是索引名称,也可以省略由系统自动生成。
通过ALTER TABLE添加唯一索引
当表已存在但需要后期增加唯一性约束时,使用ALTER TABLE更合适。语法:
ALTER TABLE 表名 ADD UNIQUE 索引名(列名);
比如为已有表添加用户名唯一限制:
ALTER TABLE users ADD UNIQUE uk_username(username);
执行后,若插入重复username的数据,MySQL会报错阻止操作。
多列唯一索引(复合唯一索引)
有时需要多个字段组合起来保持唯一,比如部门和员工编号联合唯一。创建方法类似:
CREATE UNIQUE INDEX idx_dept_emp ON employee(dept_id, emp_code);
这意味着(dept_id=1, emp_code='E001')只能出现一次,即使其他行有相同dept_id或emp_code,只要组合不同就可以。
基本上就这些。根据实际场景选择合适的方式即可。注意:创建唯一索引前应确保当前数据无重复,否则会创建失败。










