【】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. [React] Fetch Data with React Suspense

    Let's get started with the simplest version of data fetching with React Suspense. It may feel a litt ...

  2. rpm命令(转)

    rpm -qa|grep mysql rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受 ...

  3. 正睿2019省选附加赛 Day10 (这篇其实已经都咕咕了...)

    目录 2019.3.13 A.算算算(二项式定理 斯特林数) B.买买买 C.树树树 2019.3.13 比赛链接 A.算算算(二项式定理 斯特林数) 题目链接 \(x^k\)可以用二项式定理展开,需 ...

  4. Oracle 的查询组合语句

    select   a.core_txn_srl_no||a.c_dept||a.c_batch||lpad(a.c_opr_no,5,'0')||case a.txn_dr_cr_ind when ' ...

  5. 【cf比赛记录】Codeforces Round #600 (Div. 2)

    Codeforces Round #600 (Div. 2) ---- 比赛传送门 昨晚成绩还好,AC A,B题,还能上分(到底有多菜) 补了C.D题,因为昨晚对C.D题已经有想法了,所以补起题来也快 ...

  6. MySQL数据库中文乱码问题

    mysql> select * from books; +-----+---------------------------------+---------+-------------+---- ...

  7. 访问者模式(Visitor Patten)

    参考文章: http://www.importnew.com/15561.html 定义: 封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作. um ...

  8. Spring Boot通过Configuration配置多数据源

    本文结合SpringBoot + MyBatis + MySql进行多数据源配置,DataSource信息采用自定义dataSource.properties进行配置. 1.文件结构如下: 2.1 p ...

  9. RocketMQ常用命令【转】

    首先进入 RocketMQ 工程,进入/RocketMQ/bin   在该目录下有个 mqadmin 脚本 . 查看帮助:   在 mqadmin 下可以查看有哪些命令 a: 查看具体命令的使用 :  ...

  10. mybatis查询mysql的datetime类型数据时间差了14小时

    场景: 数据库字段: mybatis使用 now() 生成时间. 结果: 使用mybatis查询mysql中的数据时,所有时间都比数据库时间多了14小时,考虑了一下,初步判定是系统时区的问题.因为my ...