mysql里的replace使用有两种情况,一种是replace语句,一种是replace函数,一个是语句一个是函数,一定区别清楚。
replace语句:插入数据
replace into tablename(filed1,filed2...) values(val1,val2...),(val1,val2...)...;
这里replace和insert有什么异同:
replace语句需要有delete和insert权限,因为它具备替换拥有唯一索引或者主键索引重复数据的能力,也就是如果使用replace into插入的数据的唯一索引或者主键索引与之前的数据有重复的情况,将会删除原先的数据,然后再进行添加。
如果replace插入数据的表没有唯一索引或者主键索引,那么它的行为和insert毫无区别。
例子:
replace语句用法注意点:
1:如果replace的表有多个唯一索引,并且replace的数据复制了多个唯一索引的值,那么可能单一行数据代替多个行的旧数据。
2:replace的数据取设置的值,如果没有设置则会取默认的值,replace不能从当前行中引用值,也不能在新行中使用值。
3:由于replace会对唯一索引和主键索引重复的进行删除和重新添加,如果有自增数据,且replace没有设置成要替换的自增列数据,将可能会破坏其他表与该表老数据之间的关联性。
replace函数:替换特定字符
update tablename set filedname=replace(filedname,str,replace_str);