REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARY

KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。 
注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该

语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。

所有列的值均取自在REPLACE语句中被指定的值。所有缺失的列被设置为各自的默认值,这

和INSERT一样。您不能从当前行中引用值,也不能在新行中使用值。如果您使用一个例如“

SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT

(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。

为了能够使用REPLACE,您必须同时拥有表的INSERT和DELETE权限。

REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和

。如果对于一个单行REPLACE该数为1,则一行被插入,同时没有行被删除。如果该数大于1

,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制

了在不同的唯一索引中的不同旧行的值,则有可能是一个单一行替换了多个旧行。

受影响的行数可以容易地确定是否REPLACE只添加了一行,或者是否REPLACE也替换了其它行

:检查该数是否为1(添加)或更大(替换)。

1. 尝试把新行插入到表中

2. 当因为对于主键或唯一关键字出现重复关键字错误而造成插入失败时:

a. 从表中删除含有重复关键字值的冲突行

b. 再次尝试把新行插入到表中

REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},…),(…),…
或:

REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, …
或:

REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
SELECT …

REPLACE INTO `table` (`unique_column`,`num`) VALUES ('$unique_value',$num);跟INSERT INTO `table` (`unique_column`,`num`) VALUES('$unique_value',$num) ON DUPLICATE UPDATE num=$num;还是有些区别的.
区别就是replace into的时候会删除老记录。如果表中有一个自增的主键。
那么就要出问题了。

首先,因为新纪录与老记录的主键值不同,所以其他表中所有与本表老数据主键id建立的关联全部会被破坏。

其次,就是,频繁的REPLACE INTO 会造成新纪录的主键的值迅速增大。
总有一天。达到最大值后就会因为数据太大溢出了。就没法再插入新纪录了。数据表满了,不是因为空间不够了,而是因为主键的值没法再增加了。

mysql replace into用法详细说明相关推荐

  1. MySQL replace into 用法

    MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新 ...

  2. MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

    讨人喜欢的 MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果 ...

  3. oracle insert replace into,讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

    讨人喜欢的 MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果 ...

  4. mysql数据库replace写入_MySQL数据库replace into 用法(insert into 的增强版)

    MySQL数据库replace into 用法我以前介绍过相关的教程,但有加强版各位朋友可能不知道吧,今天我们来看一篇关于MySQL数据库replace into增强版的介绍与用法例子. Error ...

  5. MySQL replace into (insert into 的增强版)

    在使用SQL语句进行数据表插入insert操作时,如果表中定义了主键,插入具有相同主键的记录会报错:  Error Code: 1062. Duplicate entry 'XXXXX' for ke ...

  6. mysql replace

    http://blog.csdn.net/sahusoft/article/details/4446877 讨人喜欢的 MySQL replace into 用法(insert into 的增强版) ...

  7. mysql的replace_mySQL中replace的用法

    mysql replace实例说明: UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def'); REPLACE(str,from_str,to_str) 在字符串 st ...

  8. mysql replace报错_Mysql中replace与replace into的用法讲解

    Mysql replace与replace into都是经常会用到的功能:replace其实是做了一次update操作,而不是先delete再insert:而replace into其实与insert ...

  9. Python语言学习之字母R开头函数使用集锦:random/range/replace/reshape用法之详细攻略

    Python语言学习之字母R开头函数使用集锦:random/range/replace/reshape用法之详细攻略 random/range/replace/reshape用法 1.random用法 ...

最新文章

  1. UIScrollView上面放一个UIScrollView或者UITableView拖动时候 View出现一闪一闪解决办法...
  2. 2013年上半年网络工程师真题
  3. java安全点_关于OopMap、SafePoint(安全点)以及安全区域
  4. 求积问题[体会Python至简之道]
  5. 封装对MongoDB数据库的增删改查访问方法(基于MongoDB官方发布的C#驱动)
  6. QUIC学习笔记之 如何做到0RTT加密传输
  7. arm64 linux 除零正常返回,arm64程序调用规则
  8. Magento 创建唯一优惠券 Create unique coupon code in Magento
  9. Liquid基础语法
  10. ASP.NET MVC之文件上传【一】(八)
  11. 短期逾期影响贷款吗?
  12. testservice小项目总结
  13. Django 工作流程
  14. 【转】Servlet/JSP学习笔记(3)-Lomboz介绍+安装方法
  15. android qq纯净输入法,QQ输入法纯净版更新 同步手机词库
  16. oracle数据库架构视频教程,Oracle数据库体系架构_oracle架构_oracle学习视频_oracle数据库_课课家...
  17. 腾讯云灯塔计划——云行业研究报告
  18. java字符小写字母转换为大写_[Java教程]将一个字符串中的大写字母转换成小写字母,小写字母转换成大写字母(java)...
  19. VBA运行将多个excel的矩阵类型数据转为向量数据
  20. Webpack文件指纹

热门文章

  1. .net生成图片验证码
  2. Ubuntu文件的复制、移动和删除命令
  3. Struts2+Android (3) 多种方式向服务器发送信息
  4. python自学多久可以找到工作-零基础如何自学Python并且找到工作,其实也就这3点,4点...
  5. 小孩学python有意义吗-世界冠军教练告诉你:少儿编程这些坑,能不踩就别踩!...
  6. python自带的集成开发环境是什么-常用的几款Python集成开发环境或者编辑器详解...
  7. ipython安装教程-ipython notebook教程
  8. python大数据分析实例-如何用Python分析大数据(以Twitter数据挖掘为例)
  9. python学习框架图-从零搭建深度学习框架(二)用Python实现计算图和自动微分
  10. python应用于财务-用6行python代码做一个财务机器人