程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql數據庫插入語句之insertinto,replaceinto,insertignore

mysql數據庫插入語句之insertinto,replaceinto,insertignore

編輯:MySQL綜合教程

mysql數據庫插入語句之insertinto,replaceinto,insertignore


最近才發現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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved