Mysql中replace与replace into的用法讲解

Mysql中replace与replace into的用法讲解

今天,边肖将与您分享一个关于Mysql中replace和replace into用法的解释。边肖觉得内容挺好的,现在分享给大家,很有参考价值。有需要的朋友一起看看吧。

Mysql的replace和replace into都是经常使用的函数;Replace实际上做了一个更新操作,而不是删除后再插入;replace into实际上与insert into非常相似,但是对于replace into,如果表中的旧记录与用于主键或唯一索引的新记录具有相同的值,则在插入新记录之前,旧记录将被删除。

Replace是mysql中处理字符串的常用函数,可以替换字符串的内容。Trim拦截和字符串处理差不多,这里就不多说了。

replace into的主要功能类似于insert操作。主要区别在于,replace会根据主键或唯一索引检查数据是否存在,如果存在,则在更新前删除。

示例:

#表格结构:

创建表` t_test `(

` id int(11)unsigned NOT NULL AUTO _ INCREMENT,

` name` varchar(1) NOT NULL DEFAULT ,

主键(` id `),

使用BTREE的唯一键` idx_name` (`name `)

)ENGINE=InnoDB DEFAULT CHARSET=utf8mb 4

插入第一条记录

插入t_test (`name `)值( a )

#或者

替换为t_test (`name `)值( a )

使用上述方法插入两条记录,insert into会提示错误:1062-关键字 idx _ name 重复条目 a ,时间:0.001000s .使用replace into会正常运行,但id会增加1。

ps:

中的into关键字replace into可以省略。看起来一样,但使用起来有点不一样。

一、replace(object,search,replace)

用替换替换对象中的所有搜索

从中选择替换( www.jb51.net , w , n ).nnn.jb51.net

示例:用描述替换表表的名称字段中的详细信息。

更新表集名称=替换(名称,“详细信息”,“说明”)

二、replace into

相当于:如果不存在(从t中选择1其中id=1) insert into t (id,update _ time)值(1,getdate())else update t set update _ time=getdate()其中id=1;

替换的工作方式很像插入。如果表中的旧记录与用于主键或唯一索引的新记录具有相同的值,则在插入新记录之前会删除旧记录。

请注意,除非表有主键或唯一索引,否则使用REPLACE语句是没有意义的。该语句与INSERT相同,因为没有使用索引来确定新行是否复制了其他行。

所有列的值都取自REPLACE INTO语句中指定的值。所有缺少的列都设置为默认值,这与INSERT INTO相同。不能引用当前行中的值或使用新行中的值。如果使用诸如“SET col_name=col_name 1”这样的赋值,对右边列名的引用将被视为DEFAULT(col_name)。因此,这种赋值相当于SET col_name=DEFAULT(col_name) 1。

使用REPLACE INTO,您必须对表具有INSERT和DELETE权限。

REPLACE语句返回一个数字来指示受影响的行数。这个数字是删除行和插入行的总和。如果单行替换的数字为1,则插入一行,不删除任何行。如果该数字大于1,则在插入新行之前会删除一个或多个旧行。如果表包含多个唯一索引,并且新行在不同的唯一索引中复制不同的旧行的值,则有可能一行替换多个旧行。

受影响的行数可以很容易地确定replace是否只添加一行,或者REPLACE是否还替换其他行:检查数字是否为1 (add)或更大(REPLACE)。

目前,您不能在子查询中更改到一个表并从同一个表中进行选择。

以下是所用算法的更详细描述(该算法也用于加载数据.替换):

1.尝试在表格中插入新行

2.当由于主键或唯一关键字的重复关键字错误而导致插入失败时:

A.从表中删除具有重复键值的冲突行。

B.再次尝试在表格中插入新行

三种形式:

1.替换成tbl_name(col_name,)值(.)

2.替换成tbl_name(col_name,)选择.

3.替换为tbl_name集合col_name=value,

PS:

mysql中常用的三种插入数据的语句:

Insert into表示插入数据,数据库会检查主键,如有重复会报错;

替换成意味着插入替换数据。需求表中有主键或唯一索引。如果数据库中有数据,它将被新数据替换。如果没有数据效果,就和插入一样。

插入忽略意味着如果相同的记录已经存在于中,当前的新数据将被忽略;

总结

这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。谢谢你的支持。如果你想了解更多,请查看下面的相关链接。

Mysql中replace与replace into的用法讲解