近期才发现mysql的插入语句竟然有如此多的使用方法,这里拿来分享一下.
①关于insert into :
insert into table_name values();
insert into table_name (column) values ();
insert into table_name values(select (column) from table_name2);
这里的插入仅仅须要注意一点的就是:
假设发生主键冲突,(也就是插入的主键已经在表中存在时),系统报错.
②replace into :
replace into 跟 insert into 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 假设发现表中已经有此行数据(依据主键或者唯一索引推断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现反复的数据。
③insert ignore into
insert ignore into 与 insert into 的主要差别在于当发生主键冲突的时候,系统不会报错,直接跳过该条记录的插入.
感觉是不是非常有意思呢...
以下我们来做个实验.
create table test (
`id` int(11) not null auto_increment comment '主键',
`name` varchar(20) not null comment '姓名',
primary key (`id`)
)ENGINE=InnoDB DEFAULT CHARSET utf8 comment='測试表';
然后我们插入几条数据进去.
insert into test (name) values ('vein');
insert into test (name) values ('vein1');
insert into test (name) values ('vein2');
当运行以下这条语句时:
insert into test (id,name) values (1,'vein11');
系统会报错,说主键冲突.
假设运行以下的语句时:
insert ignore into test (id,name) values (1,'vein11');
系统不会报错,直接忽略.
replace into test(id,name) values(1,'vein11');
系统插入成功,而且改动表中记录为
1, vein11.
Edited by VeinQueen