mysql数据库中关于记录存在,更新记录,记录不存在,插入记录的sql语句编写

在日常开发中,我们经常会遇到这样的需求,如果这条记录存在,那么请更新记录,如果不存在,插入记录,通常的做法是,插入之前做一次select,如果记录不存在就执行insert,如果记录存在,就执行update,这样做有如下缺点:
1.如果你的表换没有创建索引,就会在select时进行全表扫描,如果表中数据量较大,这样就执行一次select就会耗费大量的系统资源,会导致系统性能极差。
2.多次操作数据库,降低系统性能。
3.在后台需要编写大量的代码,如果使用mybatis,那么就要配置多个sql语句,麻烦。
解决方案:使用replace语句,步骤如下:
1.把能唯一确定这条记录的字段设置成唯一健或符合唯一健,例如下面这张学生表

这里写图片描述
将学生表中的number字段(表示学号)设置成唯一健,sql语句如下:
ALTER TABLE student ADD UNIQUE KEY (number);
如果表中没有数据,上面的语句就可以成功创建唯一健,如果表中有数据,需要检查创建唯一健的字段中是否有重复的记录,如果有重复记录,需要删除重复记录,最好清空表中数据,再执行上面的sql语句创建唯一健。
如果唯一确定这条记录的字段不止一个,需要创建复合唯一健,sql语句写法如下:
ALTER TABLE 表名 ADD UNIQUE KEY (第一个字段名,第二个字段名,第三个字段名);
2.将原有的insert(INSERT INTO student(name,age,gender,t_id,number) VALUES(‘乔森’,29,1,2,’109’); )语句修改成如下:
REPLACE INTO student(name,age,gender,t_id,number) VALUES(‘乔森’,29,1,2,’109’);
这样当你插入number(学号)相同的记录时,只会更新,而当你插入number不同的记录时,会执行插入;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值