MYSQL中insert into和replace into以及insert ignore的区别

mysql中常用的三种插入数据的语句:

insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错;

replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引的话,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;

REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行REPLACE该数为1,则一行被插入,同时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中的不同旧行的值,则有可能是一个单一行替换了多个旧行。

insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据;

注:这些都是根据主键来的。。。

下面通过代码说明之间的区别,如下:

create table testtb(

id int not null primary key,

name varchar(50),

age int

);

insert into testtb(id,name,age)values(1,"bb",13);

select * from testtb;

insert ignore into testtb(id,name,age)values(1,"aa",13);

select * from testtb;//仍是1,“bb”,13,因为id是主键,出现主键重复但使用了ignore则错误被忽略

replace into testtb(id,name,age)values(1,"aa",12);

select * from testtb; //数据变为1,"aa",12

时间: 2024-12-08 10:13:09

MYSQL中insert into和replace into以及insert ignore的区别的相关文章

mysql中key 、primary key 、unique key 与index区别

一.key与primary key区别 CREATE TABLE wh_logrecord ( logrecord_id int(11) NOT NULL auto_increment, user_name varchar(100) default NULL, operation_time datetime default NULL, logrecord_operation varchar(100) default NULL, PRIMARY KEY (logrecord_id), KEY wh

[Z]mysql中key 、primary key 、unique key 与index区别

一.key与primary key区别 CREATE TABLE wh_logrecord ( logrecord_id int(11) NOT NULL auto_increment, user_name varchar(100) default NULL, operation_time datetime default NULL, logrecord_operation varchar(100) default NULL, PRIMARY KEY (logrecord_id), KEY wh

mysql中的count(primary_key)、count(1)、count(*)的区别

表结构如下: mysql> show create table user\G; *************************** 1. row *************************** Table: user Create Table: CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `pwd` varchar(50) NOT N

mysql中tinyint、smallint、mediumint,int 和bigint 的区别

1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方即-128到127,无符号从 0 到 255 的整型数据. TINYINT[(M)] [UNSIGNED] [ZEROFILL]   M默认为4 很小的整数,存储大小为 1 字节.带符号的范围是-2^7 (-128) 到 2^7 - 1 (-128到127).无符号的范围是0到255. SMALLINT[(M)] [UNSIGNED] [ZEROFILL]  M默认为6 小的整数,存储大小为 2 字节.带符号的范围是从

MySQL中条件放在where后面与放在on后面的区别

假设有两种表:test_on_position表和address表,address表存放地址,test_on_position存放会员及其常用的地址,数据如下: address表: test_on_position表: 1. left join 条件在where后面 SELECT * FROM test_on_position LEFT JOIN address ON test_on_position.address = address.id WHERE test_on_position.add

MySQL 中 EXISTS 的用法

在MySQL中 EXISTS 和 IN 的用法有什么关系和区别呢? 假定数据库中有两个表 分别为 表 a 和表 b create table a ( a_id int, a_name varchar(20) ) create table b ( b_id int, b_name varchar(20) ) 那么 select * from a where a_name in (select b_name from b) 这条SQL语句的意义很明显是选取满足where条件下 a 中的所有列的数据

关于MySQL 中 EXISTS 的用法

在MySQL中 EXISTS 和 IN 的用法有什么关系和区别呢? 假定数据库中有两个表 分别为 表 a 和表 b create table a ( a_id int, a_name varchar(20) ) create table b ( b_id int, b_name varchar(20) ) 那么 select * from a where a_name in (select b_name from b) 这条SQL语句的意义很明显是选取满足where条件下 a 中的所有列的数据

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

MySQL中的insert ignore into, replace into等的一些用法总结(转) 在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下.我们先建一个简单的表来作为测试: CREATE TABLE `books` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(200) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `NewIndex1` (`name`) ) ENGI

MySQL replace into (insert into 的增强版)

在使用SQL语句进行数据表插入insert操作时,如果表中定义了主键,插入具有相同主键的记录会报错:  Error Code: 1062. Duplicate entry 'XXXXX' for key 'PRIMARY'(主键冲突) 这样我们只好检查主键是不是存在,若存在则更新,若不存在则插入.或者写SQL流程控制语句(if...else...) Mysql提供了replace into跟insert into的功能一样.不同点在于: 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先