MySQL 插入数据时,如存在则更新(ON DUPLICATE KEY UPDATE)用法简介说明


摘要:
下文讲述MySQL数据表操作时,如果存在则更新的操作方法
实验环境:sql serer 2008 R2


在数据表的设计中,通常我们会为数据表加上主键,作为数据更新的条件。
例:

   if exists(select null from tableName where keyId =@keyId)
   begin
      /*更新数据表*/ 
   end
   else
   begin
      /*插入数据表*/
   end

这种写法最大的弊端就是,每次操作时,都使用了两条sql脚本,即先判断后运行。


那么在MySQL中,新推出了一个关键字“ ON DUPLICATE KEY UPDATE ”,我们可以使用此关键字达到“数据存在则更新,否则插入的目的”。

ON DUPLICATE KEY UPDATE 关键字的作用
向数据库插入数据时,如果主键值存在,则运行update操作,否则运行插入操作


ON DUPLICATE KEY UPDATE 关键字举例应用

  ---创建测试表
   CREATE TABLE `maomao` (
  `keyId` int(11) NOT NULL,
  `info` varchar(80) DEFAULT NULL,
  PRIMARY KEY (`keyId`)
) ENGINE=InnoDB;
---插入测试数据
INSERT INTO `maomao` VALUES ('1', 'sqlblog');
INSERT INTO `maomao` VALUES ('2', 'sqlserver');
INSERT INTO `maomao` VALUES ('3', 'maomao365.com');
---测试ON DUPLICATE KEY UPDATE关键字
INSERT INTO maomao(keyId,`value`) VALUES(3, 'insertTest') ON DUPLICATE KEY UPDATE `info`='updateTest';
---查询表数据
select * from    `maomao`