1, 命令行操作
分为两种. 一种是在建表时就想好要加上唯一性, 另一种是在后期才发现需要设置唯一性.
建表时:
- CREATE TABLE `t_user` (
- `Id` int(11) NOT NULL AUTO_INCREMENT,
- `username` varchar(18) NOT NULL unique,
- `password` varchar(18) NOT NULL,
- PRIMARY KEY (`Id`)? www.2cto.com
- ) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;
后期加上:
- ``ALTER TABLE .t_user. ADD unique(username`)
- ``
2,navicat 方式
使用 navicat 操作 MySQL 数据库更加方便, 推荐大家多多使用这种方式
设计表时: 如图选择索引, 第一项'名', 随便自己起一个有意义的名字就行了. 第二项是你要设置唯一性的字段, 然后索引类型选择 unique.
表已经建好的情况: 选中表, 右键 - 设计表 - 和上述一样操作就行啦.
3, 可能遇到的错误
如果唯一性是后期加的 (设计完表之后, 并且表里已经有了一些数据)
可能存在表中部分数据不满足唯一性的情况, 例: 想对字段 sid 设置唯一性, 但目前表中有两条数据 sid 都是 472, 这是设置唯一性就会出错.
如下图所示 (这种情况在命令行操作下也会出现, 只不过是以文字的形式)
这时就应该删除重复的数据后再设置唯一性.
4, 进阶操作 -- 组合索引的唯一性
前面只讲了给一个字段设置唯一性的方法, 如果有两个或多个字段的组合需要唯一呢?
例子: 有一个保存大四毕业生每周上传的毕设报告的表. 它有学生 id:sid, 周数: week, 报告内容: content 等字段.
这里只允许每个学生每周上传一份周报告, 即 sid 和 week 的组合不能出现重复的情况, 也就是说不能有两条记录他们的 sid 和 week 都相同.
如何在 MySQL 中进行设置呢, 这里只给出 navicat 中的方法: 如图只需要选中两个栏位就可以啦!
来源: http://www.bubuko.com/infodetail-3030942.html