设置mysql单个字段唯一和组合字段唯一

现有一张表a字段分别是a、b、c。

目标

1、设置表中字段a为唯一字段,但a不能是主键;

2、设置表中字段a,b组合字段为唯一字段,但a,b不能是主键。

第一步:建立表

CREATE TABLE `a` (
  `a` varchar(6) DEFAULT NULL,
  `b` varchar(6) DEFAULT NULL,
  `c` varchar(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

第二步:设置唯一索引

#目标1:设置表中字段a为唯一字段,但a不能是主键。
ALTER TABLE a ADD UNIQUE(a)
#验证目标1:插入2条相同数据是否会失败,失败表示约束成功。
INSERT INTO a(a) VALUES('0');
INSERT INTO a(a) VALUES('0');

#目标2:设置表中字段a,b组合字段为唯一字段,但a,b不能是主键。
#先查询刚才的索引,然后清空刚才的索引(清空索引时index_name不要加引号。)。
SELECT * FROM mysql.`innodb_index_stats` a WHERE a.`database_name` = '数据库名' AND a.table_name="a";
DROP INDEX index_name ON table_name; 
DROP INDEX 刚才的索引名 ON a; 
#设置组合索引。
ALTER TABLE a ADD UNIQUE(a,b)
#插入2条相同的数据是否会失败,失败表示约束成功。
INSERT INTO a(a,b) VALUES('0','1');
INSERT INTO a(a,b) VALUES('0','1');

 

你可能感兴趣的:(MySQL)