【】insert into 与 replace into 区别

replace into 的运行与insert into 很相似。不同点:

若表中的一个旧记录与一个用于PRIMARY KEY 或 一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。

尤其注意:

除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE INTO 语句没有意义。

因为没有索引被用于确定是否新行复制了其它行。

实例如下:

(1)创建表

-- [1]drop
DROP TABLE `students`; -- [2]create
CREATE TABLE `students` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`sName` VARCHAR (10) NOT NULL,
`sAge` INT (2) UNSIGNED ZEROFILL NOT NULL,
`sAddr` VARCHAR (20) DEFAULT NULL,
`sGrade` INT (2) DEFAULT NULL,
`sStuId` INT (8) DEFAULT NULL,
`sSex` INT (1) UNSIGNED DEFAULT NULL
) ENGINE = INNODB;

(2)插入insert into

SQL语句:

INSERT INTO students(id, sName, sAge, sAddr, sGrade, sStuId, sSex)
VALUES (1, 'wangchao', 8, 'heyang', 1, 1801111, 0);

执行结果:

查询数据:

(3)插入replace into

SQL语句:

REPLACE INTO students(id, sName, sAge, sAddr, sGrade, sStuId, sSex)
VALUES (1, 'suntao', 9, 'weinan', 3, 1803110, 1);

执行结果:

注意:共2行受影响,一行被删除,一行被添加。同时具有delete、insert操作。

查询数据:

(4)insert into on duplicate key update

SQL语句:

INSERT INTO students(id, sName, sAge, sAddr, sGrade, sStuId, sSex)
VALUES (1, 'wangchao', 8, 'heyang', 1, 1801111, 0)
ON DUPLICATE KEY UPDATE
sName = 'wangchao',
sAge = 8,
sAddr = 'heyang',
sGrade = 1,
sStuId = 1801111,
sSex = 0;

执行结果:

注意:共2行受影响,原来行被删除,新的一行被添加。但是主键值id为1保持不变。

查询数据:

Good Good Study,Day Day Up.

顺序 选择 循环 总结

Mysql 语句 insert into 与 replace into 区别的更多相关文章

  1. MySQL的insert ignore与replace into不同

    以前从来没有接触过replace into这个语法,但是却看到很多人都在使用这个语法,并且应用在很多生产环境中,于是我也去学习了一下repalce into的用法. 关于replace 一句话:正常情 ...

  2. mysql语句insert后取到返回的主键id

    Q:   有时候做类似接口里的数据订正,需要取到insert语句返回的id主键,在程序里通过对象返回好取,但是写sql怎么取到呢? A:  用select @@identity得到上一次插入记录时自动 ...

  3. MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解

    本篇文章是对MySQL数据库INSERT.UPDATE.DELETE以及REPLACE语句的用法进行了详细的分析介绍,需要的朋友参考下   MySQL数据库insert和update语句引:用于操作数 ...

  4. 转载:MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解

    转自:http://www.jb51.net/article/39199.htm 本篇文章是对MySQL数据库INSERT.UPDATE.DELETE以及REPLACE语句的用法进行了详细的分析介绍, ...

  5. MySQL的insert语句的区别

    SQL Server: insert into tb_articleType (articleType_name,articleType_info) values ("test", ...

  6. mysql语句与sql语句的基本区别

    . MySQL支持enum和set类型,SQL Server不支持: . MySQL不支持nchar.nvarchar.ntext类型: . MySQL数据库的递增语句是AUTO_INCREMENT, ...

  7. MySQL中的insert ignore into, replace into等的一些用法小结(转)

    MySQL中的insert ignore into, replace into等的一些用法总结(转) 在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下.我们先建一个简单的表来作为测试: ...

  8. MySQL数据库 crud语句 ifnull() 创建新账户 备份数据库 一对多关系 多对多(中间表) 外键约束 自关联 子查询注意事项 DML DDL DQL mysql面试题 truncate与delete的区别

    DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL ...

  9. 老李分享:MySql的insert语句的性能优化方案

    老李分享:MySql的insert语句的性能优化方案   性能优化一直是测试人员比较感兴趣的内容,poptest在培训学员的时候也加大了性能测试调优的方面的内容,而性能优化需要经验的积累,经验的积累依 ...

随机推荐

  1. 华三NAT总结

    1.保证网络之间的连通性,可以用动态路由协议使网络连通. 2.配置一条默认路由到外网. ip route-static 0.0.0.0 0 210.33.44.2 3.进入连接外网的端口,把这个端口设 ...

  2. Linux OOM一二三

    Linux开发一般会遇到“/proc/sys/vm/overcommit_memory”,即文件/etc/sysctl.conf中的vm.overcommit_memory,Overcommit的意思 ...

  3. 洛谷 p1968 美元汇率 题解

    传送门 美元由马克转化,马克由美元转化 求最大美元 每一天只有2种选择 ①:不转化另一货币 ②:转化另一货币 典型01背包 可以开一个二维数组f[100][3] F[i][1]表示前i天获得最大美元 ...

  4. 关于wineQQ8.9.19983deepin23版本提升不能在使用请升级,Linux偷懒升级方法

    安装wineQQ8.9.19983deepin23版本后提示,不在提供服务请升级. 第一步 前往QQ官方下载Windows最先版本QQ https://qd.myapp.com/myapp/qqtea ...

  5. nginx 反向代理之 proxy_cache

    proxy_cache将从C上获取到的数据根据预设规则存放到B上(内存+磁盘)留着备用,A请求B时,B会把缓存的这些数据直接给A,而不需要再去向C去获取. proxy_cache相关功能生效的前提是, ...

  6. 「SDOI2014」旅行(信息学奥赛一本通 1564)(洛谷 3313)

    题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰. 为了方便,我 ...

  7. MyBatis智能标签!

    if 语句 <select id="getOne" resultType="com.mybatis.entity.SmbmsProviderEntity" ...

  8. 2019-09-16 16:42:03.621946: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA Traceback (most recent cal

    -- ::] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA ...

  9. 运行java程序的时候出现Exception in thread "main" java.lang.UnsupportedClassVersionError:

    1 Exception in thread "main" java.lang.UnsupportedClassVersionError: com/test/inherited/In ...

  10. Android开发:文本控件详解——TextView(二)文字跑马灯效果实现

    一.需要使用的属性: 1.android:ellipsize 作用:若文字过长,控制该控件如何显示. 对于同样的文字“Android开发:文本控件详解——TextView(二)文字跑马灯效果实现”,不 ...