mysql 使用REPLACE INTO,存在则更新,不存在则插入

最近根据公司要求,从前端开始也开发后端,最近在使用mysql数据库时,有一个需求:接收到前端数据后,更新数据库,如果有该条数据就更新这条数据,如果没有这条数据就添加一条新数据。看了很多文档后,发现对新手不太友好,所以记录下来,方便下次复习。

使用REPLACE INTO语句
1. MySQL replace into 有三种形式:
1. replace into tbl_name (col_name, ...) values (...)
2. replace into tbl_name (col_name, ...) select ...
3. replace into tbl_name set col_name=value, ...

// tbl_name为数据库中操作的表的名称
// (col_name, ...) 代表操作的表的字段名,与后面的 values (...) 一一对应
2. 如何知道数据库是否有这条数据
  • 目前我主要是设置数据表中的唯一索引“UNIQUE”
3. 使用navicat软件设置唯一索引
  • 打开对应数据库的数据表,点击文件 =>设计表
  • 点击索引,在栏位里面选择需要设置的列字段,索引类型选“Unique”,点击保存,其他的会自动填上
  • 栏位可以选多个字段,如果选择多个,在进行数据库操作时,就需要选择的字段对应的值全部相同,才会认为是一条数据,只要有一个字段对应的值不一样,就会添加一条新数据。
    在这里插入图片描述
    在这里插入图片描述
4. 最后在操作数据库时,使用语句replace into tbl_name (col_name, ...) values (...)
  • 以node.js中代码为例
  • 如果之前设置的unique是‘userId’字段,那么如果数据库中有一条数据的“userId”,与传入数据的‘userId’一样,则会更新该条数据,否则就添加一条新数据
connection.query('REPLACE INTO 数据表名称 (userId, password,...) VALUES (?, ?, ...);', [userId, password,...], (mysqlError, results, fields) => {
	.....
}
// (userId, password,...) 表示需要传入要操作的数据表的字段
// (?, ?, ...) 表示使用[userId, password,...]传入数据
// [userId, password,...] 表示传入的需要更新或者添加的数据,需要与前面的(userId, password,...)一一对应
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值