特征:
1.不允许有重复的值,保证数据的唯一性。
2.可以有空值
3.在一个表中,可以有多个唯一约束
4.默认情况下,唯一约束的名字和列名保持一致
5.添加唯一约束的列,系统也会默认给这个列添加一个唯一索引
索引:等同于书本的目录,将来能够加快数据的查询速度。
如何添加唯一约束
1.创建表的同时创建唯一约束 UN_列名
格式一:
create table 表名(
列名1 数据类型,
列名2 数据类型,
constraint 唯一约束的名字 unique(列名1),
constraint 唯一约束的名字 unique(列名2)
)
格式二:
create table 表名(
列名1 数据类型 unique,
列名2 数据类型 unique,
列名3 数据类型
)
一个表中是可以存在多个约束的
2.针对已经存在的表,添加唯一约束
格式:
alter table 表名 add unique(列名[,列名2])
3.删除唯一约束
格式:
alter table 表名 drop index 唯一约束的名字
MySQL中有唯一性约束的列能为空。
唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的,允许为空,但只能出现一个空值。对字段使用了Unique约束,可以当主键在数据库中使用。约束名的命名规则推荐采用“约束类型_约束字段”这样的形式。
扩展资料:
当唯一约束和主键都强制唯一性时,如果满足下列条件,则应将唯一约束而不是主键约束附加到表上:
1、希望在列或列的组合中强制唯一性。可将多个唯一约束附加到表,但是只能将一个主键约束附加到表。
2、希望在允许空值的列中强制唯一性。可将唯一约束附加到允许空值的列,但是只能将主键约束附加到不允许空值的列。当将唯一约束附加到允许空值的列时,请确保在约束的列中最多有 一行包含空值。
你用那个图形界面的软件,来加就可以了,应该在索引那一栏里面,自己写语句修改表,弄不好会出错的,还麻烦。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`)
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk
2.给已经建好的表加上唯一性约束
ALTER TABLE `t_user` ADD unique(`username`)
我机器上没有数据库,没验证这2个sql,不晓得行不行,大概是这样的吧。
有些人用程序来给数据做约束的,比如约束用户名,
DataSet ds = dao.queryForDataSet(connName,"select * from t_user where username=? and password=?",new Object[]{username,password},0,0,false)
if(ds.size()==1){
//登陆成功
}else if(ds.size()>1){
//冻结此账户,记录错误日志
}else{
//告知用户账号不存在或者密码错误
}
插入用户之前事先查询一下这个用户是否存在,可以用ajax做验证账号是否重复的效果,很多网站都是这么干的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)