欢迎来到至成科技_西安服务器托管_西安服务器租用_西安域名注册
 售前免费咨询专线02989390727
时间:2014-07-24  来源:至成科技  作者:至成科技  点击次数:1656

较近才发现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

西安网站建设-至成科技光放微信
陕西本土非营利性IDC互联网接入商/  Shanxi Local nonprofit IDC Internet access provider

公司地址:西安市经开区凤城四路西安国际企业中心B座23层06-10室

7*24小时售前咨询电话:02989390727

7*24小时售后服务电话:02989390727

《中华人民共和国增值电信业务经营许可证》陕B1.B2-20140011  陕ICP备12008874-2  © 2012-2024 ZCITIDC,Inc.

通信地址:西安市经开区凤城四路西安国际企业中心B座23层06-10室  邮政编码:710016

域名合作伙伴:新网互联软件服务有限公司

  • 西安服务器租用
  • 西安域名注册
  • 西安云主机
  • 西安VPS主机
  • 西安网站托管