贵州做网站公司
贵州做网站公司~专业!靠谱!
10年网站模板开发经验,熟悉国内外开源网站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等网站程序,可为您提供网站建设,网站克隆,仿站,网页设计,网站制作,网站推广优化等服务。我们专注高端营销型网站,企业官网,集团官网,自适应网站,手机网站,网络营销,网站优化,网站服务器环境搭建以及托管运维等。为客户提供一站式网站解决方案!!!

MySQL replace INTO语句

来源:网络转载 时间:2024-01-29 08:05:57

介绍

在向表中插入数据时,我们经常会:首先判断数据是否存在;如果不存在,则插入;如果存在,则更新。

但在 MySQL 中有更简单的方法,replace into(insert into 的增强版),当表中的旧行与 primary key或 UNIQUE 索引的新行具有相同的值,则在插入新行之前删除旧行,否则只就新增插入。

replace 它的工作方式与 insert 完全相同,它是 SQL 标准的 MySQL 扩展。它要么插入,要么删除和插入。

replace仅当表具有PRIMARY KEY或 UNIQUE索引时才有意义。否则,它就等于insert,因为没有索引可用于确定新行是否与另一行重复。

要使用 replace,必须同时拥有表的insert和 delete权限。

replace INTO用法

作用
当表中的旧行与 PRIMARY KEY或 UNIQUE 索引的新行具有相同的值,则在插入新行之前删除旧行,否则就只新增插入。

语法

replace INTO 表名 (字段名, ...)  values(字段值, ...);

insert into 和 replace into 的区别

使用 insert into时,当表中的旧行与 PRIMARY KEY 或 UNIQUE 索引的新行具有相同的值,就会插入失败。

而使用 replace into,会完成记录替换。

示例

CREATE TABLE test (  id INT UNSIGNED NOT NULL AUTO_increment,  data varchar(64) DEFAULT NULL,  ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON update CURRENT_TIMESTAMP,  PRIMARY KEY (id));

创建 test 表,运行以下语句:

mysql> replace INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');Query OK, 1 row affected (0.04 sec)mysql> replace INTO test VALUES (1, 'New', '2014-08-20 18:47:42');Query OK, 2 rows affected (0.04 sec)mysql> select * FROM test;+----+------+---------------------+| id | data | ts                  |+----+------+---------------------+|  1 | New  | 2014-08-20 18:47:42 |+----+------+---------------------+1 row in set (0.00 sec)

创建第二张表与第一张表几乎相同,但主键现在是覆盖两列,如下所示:

CREATE TABLE test2 (  id INT UNSIGNED NOT NULL AUTO_INCREMENT,  data VARCHAR(64) DEFAULT NULL,  ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON update CURRENT_TIMESTAMP,  PRIMARY KEY (id, ts));

当我们在test表上运行test2相同的两个replace语句时,我们得到了不同的结果:

mysql> replace INTO test2 VALUES (1, 'Old', '2014-08-20 18:47:00');Query OK, 1 row affected (0.05 sec)mysql> replace INTO test2 VALUES (1, 'New', '2014-08-20 18:47:42');Query OK, 1 row affected (0.06 sec)mysql> select * FROM test2;+----+------+---------------------+| id | data | ts                  |+----+------+---------------------+|  1 | Old  | 2014-08-20 18:47:00 ||  1 | New  | 2014-08-20 18:47:42 |+----+------+---------------------+2 rows in set (0.00 sec)

这是因为,当运行 replace INTO 时,test2表中,列值id和ts列值,必须与要替换行的现有行的值进行相匹配;否则,插入一行。

标签:REPLACEINTO-MySQL-

SEO小店网站优化 能带来大量精准流量的网站才是好网站,小店网络公司SEO优化推广可以为企业网站带来大量的有效流量。 ...

汉寿网站排名快速提升 汉寿网络公司快速提升企业网站排名,通过网站优化推广,让汉寿企业网站在搜索引擎的排名长期稳定。 ...

SEO张家界网站优化 能带来大量精准流量的网站才是好网站,张家界网络公司SEO优化推广可以为企业网站带来大量的有效流量。 ...

the north face鞋子怎么辨别真伪?北脸鞋需要从鞋标上鉴别真伪。如果鞋标符合要求,就是正品。鞋标主要关注以下几个方面:1)鞋子的logo很圆滑,很多假的标签会印的生涩变形;2)注意字母与字母的对齐,各部分字母与数字的对齐;3)注意条形码的格式。真正的标签只有粗线和细线两种;size栏中US、UK、EU、CM的字母间隔要大致相等;5)当然要有UPC码,一行UPC码中字母和数字的间距要相等。...

手机如何设置备忘录提醒功能?苹果手机的备忘录叮嘱功能是在提醒事项里设置中。1.可以打开手机,能找到提醒事项选项,打开华为手机备忘录闹钟怎么不响?可直接进入备忘录直接点击待办>直接点击+先添加待办事项>再点击下方闹钟按钮,你选叮嘱时间。然后把直接点击备忘录右上角三点>可以设置>通知>容许通知传送>安排铃声>本地音乐>你选择一首音乐做为铃声。那样的话可以不能够防止建议使用参数设置铃声时,来电信息时间短...

韩币1千万等于多少钱?汇率转换10000000韩元= 57860元1元= 172.831韩元韩币1千万等于多少钱?1000万韩元,或1000万韩元= 57850.5177。韩币1千万等于多少钱?1韩元=0.0062,1000万韩元= 6.2万,以银行柜台成交价为准。14.1万元韩元合多少钱?按现行汇率计算1韩元=0.0059=168.8124韩元=829.32。数据仅供参考。二零一三年韩币一万四千...

TOP