首页 > 数据库 >mysql replace && insert && update && delete

mysql replace && insert && update && delete

时间:2023-08-21 19:13:08浏览次数:35  
标签:插入 insert 记录 title update REPLACE INSERT &&

目录

mysql replace && insert && update && delete

replace

我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一索引,当我们再向这个表中使用已经存在的键值插入一条记录,那将会抛出一 个主键冲突的错误。
当然,我们可能想用新记录的值来覆盖原来的记录值。如果使用传统的做法,必须先使用DELETE语句删除原先的记录,然后再使用 INSERT插入新的记录。而在MySQL中为我们提供了一种新的解决方案,这就是REPLACE语句。使用REPLACE插入一条记录时,如果不重 复,REPLACE就和INSERT的功能一样,如果有重复记录,REPLACE就使用新记录的值来替换原来的记录值。
使用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。这样就可以不必考虑在同时使用DELETE和INSERT时添加事务等复杂操作了。
在使用REPLACE时,表中必须有唯一索引,而且这个索引所在的字段不能允许空值,否则REPLACE就和INSERT完全一样的。
在执行REPLACE后,系统返回了所影响的行数,如果返回1,说明在表中并没有重复的记录,如果返回2,说明有一条重复记录,系统自动先调用了 DELETE删除这条记录,然后再记录用INSERT来插入这条记录。如果返回的值大于2,那说明有多个唯一索引,有多条记录被删除和插入。

//插入一条数据,注意可以设置title_id为主键,不设置主键,当插入时会覆盖多条
REPLACE INTO xiaoshuo (title_id,title,word) VALUES(20230812, '主题', '正文');

//插入多条记录
REPLACE INTO xiaoshuo(title_id,title,word)
VALUES(20230812, '主题1', '正文1'), (20230813, '主题2', '正文2');

//也可以使用SET语句
REPLACE INTO users SET title_id = 20230813, title = '主题2', word = '正文2';

标签:插入,insert,记录,title,update,REPLACE,INSERT,&&
From: https://www.cnblogs.com/liwenchao1995/p/17646805.html

相关文章

  • df.insert()插入1列
    pandas.DataFrame.insertDataFrame.insert(self,loc,column,value,allow_dupicates=False)功能:InsertcolumnintoDataFrameatspecifiedlocation参数详解:注意:进行insert之后,会修改原数据,且不能用于赋值操作。loc:int#使用整型数据,是列数据的插入的位置,必须是0到Le......
  • MySQL-进阶篇 ( SQL 优化:插入 + 主键 + order by + group by + limit + count + updat
    MySQL-进阶篇(SQL优化)目录MySQL-进阶篇(SQL优化)SQL优化插入数据index批量插入手动提交事务主键插入大批量插入数据主键优化页分裂页合并主键设计原则orderby优化Usingfilesort:Usingindex:优化注意:groupby优化未创建索引时:创建索引后:优化limit优化count优化一......
  • Mysql分表后同结构不同名称表之间复制数据以及Update语句只更新日期加减不更改时间
    场景SpringBoot+Mybatis+定时任务实现大数据量数据分表记录和查询:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126225846通过以上分表实现的同结构不同表名之间的表,如何将一个表中的数据复制到另一个表中,且将日期字段进行同样的新增,时间字段不变。注:博客:ht......
  • select......for update会锁表还是锁行
    select查询语句是不会加锁的,但是select.......forupdate除了有查询的作用外,还会加锁呢,而且它是悲观锁。那么它加的是行锁还是表锁,这就要看是不是用了索引/主键。没用索引/主键的话就是表锁,否则就是是行锁。验证:建表sql//id为主键  //name 为唯一索引CREATE TABLE user ......
  • select......for update会锁表还是锁行
    select查询语句是不会加锁的,但是select.......forupdate除了有查询的作用外,还会加锁呢,而且它是悲观锁。 需要关闭自动提交,通过set@@autocommit=0;设置为手动提交。0代表手动提交,1代表自动提交。结果:如果查询条件用了索引/主键,那么select.....forupdate就会进行行锁。......
  • iTOP-RK3588开发板单独编译Android固件-打包update.img
    在ubootkernelandroid都编译完成的情况下,才可以打包update.img,所以一般在完整编译的时候用。输入以下命令:./build.sh-u打包完成会在rockdev/Image-rk3588_s目录下生成update.img镜像。更多内容:B站搜索迅为RK3588开发板......
  • mybatis insert foreach批量添加
    mybatisinsertforeach批量添加intinsertSelectiveBatch(List<ImageDetailEntity>myList);//写法1<insertid="insertSelectiveBatch"><foreachitem="record"collection="list"separator=",">......
  • Insert 1, Insert 2, Insert 3, ...
    Insert1,Insert2,Insert3,...时间限制(普通/Java):2000MS/4000MS内存限制:1048576KByte描述输入输出样例输入6112233样例输出8思路单调栈从左到右遍历数组,遇到1则入栈;若不为1则判断能否与最近的1匹配,如果能则继续,如果不能,则将栈顶......
  • SAP Infinite Transaction with Update 的一个具体例子
    在计算机科学中,事务是一组操作的集合,这些操作要么全部成功执行,要么全部回滚,以确保数据的一致性和完整性。某些企业管理软件的业务事务,被实现为InfiniteTransaction,以节省事务开始时的初始化时间。这种设计离不开乐观锁,因为乐观锁在更改实际发生之前不会转换为排他锁(E锁,全......
  • 如何解决 yum update 报错
    yumupdate的时候遇到报错[root@shawnyan~]#yumupdateerror:rpmdb:BDB0113Thread/process2043/140494753589056failed:BDB1507ThreaddiedinBerkeleyDBlibraryerror:db5error(-30973)fromdbenv->failchk:BDB0087DB_RUNRECOVERY:Fatalerror,rundataba......