insertinto

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

replace与replace into

Replace是mysql中常用的处理字符串的函数,可以替换字符串的内容。Trim截取也类似于字符串处理,之前已经介绍过了,这里就不多说了。

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

实例

1.创建表格

# table structure:create table ` t _ test `( ` id ` int(11)unsigned not null auto _ increment,’ name` varchar (1) not null default ‘ ‘,primary key (`id `),Unique key ` idx _ name `( ` name `)using btree)engine = innodb default charset = utf8mb 42。插入第一条记录。

INSERT INTO t_test (`name`) VALUES (‘a’);#或者REPLACE INTO t_test (`name`)VALUES(‘a’);

insertinto插入到t_test (`name `)值(‘ a ‘);#或替换成t _ test (` name `)值(` a ‘);

以上述方式插入两条记录将提示错误:1062-关键字’ idx _ name ‘的重复条目’ a ‘,时间:0.001000s。使用replace into将正常执行,但id将增加1。

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

replace(object,search,replace)

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

从dual中选择replace(‘www.baidu.com ‘,’ w ‘,’ n ‘);

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

update table set name = replace(name,’ detail ‘,’ description’) replace into等价于:如果不存在(select 1 from where id = 1)insert into t(id,update_time) values(1,getdate())else update t set update _ time = getdate()where 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(添加)或更大(替换)。

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

三种形式:

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, …mysql中常用的三种插入数据的语句insert into表示插入数据,数据库会检查主键,如果出现重复会报错;replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据;

后面会分享更多关于devops和DBA的内容,感兴趣的朋友可以关注一下~

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论