Mysql设置某列的值唯一
1.创建表的时候
这里举例创建student表
(id不为空,自增;name不为空;idCard不为空,并且值唯一)
CREATE TABLE `t_student` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(18) NOT NULL ,
`idCard` varchar(18) NOT NULL unique,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=utf8;
2.给已经建好的表加上唯一性约束
第一种:
mysql语句:
ALTER TABLE `t_student` ADD CONSTRAINT unique_taskCode UNIQUE(taskCode);
语句解释:
ALTER TABLE <表名称> ADD CONSTRAINT <约束名称> UNIQUE(<约束字段>);
第二种:
mysql语句:
ALTER TABLE `t_student` MODIFY COLUMN taskCode VARCHAR(20) UNIQUE;
语句解释:
ALTER TABLE <表名称> MODIFY COLUMN <约束字段> <约束字段类型> UNIQUE;
注意事项:
这里我是给已经建好的表加约束,但是有一个错误提示,如下:
我一直以为是自己的mysql语句错误,找了文档,发现没毛病啊,最后翻译这话,意思是需要建立约束的字段值‘2’存在重复数据,所以如果表中有数据,然后要给某一列加唯一约束需要先把该字段对应的数据查看一遍,确定没有重复数据才可以添加成功;
3.查看表中所有的约束
mysql语句:DESC `t_student`;
语句解释:DESC <表名称>;
4.删除约束:
mysql语句:ALTER TABLE `t_student` DROP INDEX taskCode ;
语句解释:ALTER TABLE <表名> DROP INDEX <约束名> ;