mysql已经有重复数据的字段是否可以加唯一约束,该怎么加。是否对其有影响

mysql已经有重复数据的字段是否可以加唯一约束,该怎么加。是否对其有影响,第1张

你用那个图形界面的软件,来加就可以了,应该在索引那一栏里面,自己写语句修改表,弄不好会出错的,还麻烦。

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做验证账号是否重复的效果,很多网站都是这么干的

外键约束对父表的含义:

在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on

update/on

delete子句,

innodb支持5种方式,

分列如下

.

cascade方式

在父表上update/delete记录时,同步update/delete掉子表的匹配记录

on

delete

cascade从mysql3.23.50开始可用

on

update

cascade从mysql4.0.8开始可用

.

set

null方式

在父表上update/delete记录时,将子表上匹配记录的列设为null

要注意子表的外键列不能为not

null

on

delete

set

null从mysql3.23.50开始可用

on

update

set

null从mysql4.0.8开始可用

.

no

action方式

如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete *** 作

这个是ansi

sql-92标准,从mysql4.0.8开始支持

.

restrict方式

同no

action,

都是立即检查外键约束

不知道这文章对你有没有帮助!

假设一张表中含有 姓名,投递地址,邮编,这三字段

如果你确定在符合条件的查询结果中,这三个字段的值都是相同的:

select distinct 姓名,投递地址,邮编 from AA where ……

#----------------------另外一种情况-------------------------------

如果你想做的是一种统计工作可以用group by

例如:计算出每个投递段(假设用“邮编”区分)需要投递的邮件数量。

select 邮编,count(姓名) as 投递数量 from AA group by 邮编

注:在group by 子句中没有出现的字段,在做投影 *** 作时一定要在聚合函数中。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6101762.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存