1.ignore 若有主键重复的记录,则该条记录不会被插入到数据库中. 示例:
insert into actor values(3,'ED','CHASE','2006-02-15 12:34:33');
这样当有重复记录就会忽略,执行后返回数字0;
解决:
insert IGNORE into actor values(3,'ED','CHASE','2006-02-15 12:34:33');
还有个应用就是复制表,避免重复记录:
INSERT IGNORE INTO `table_1` (`name`) SELECT `name` FROM `table_2`;
2.replace 语法:replace(object,search,replace) 语义:把object对象中出现的的search全部替换成replace。 实例:
Update `table_name` SET `field_name` = replace (`field_name`,`from_str`,`to_str`);
如:把'病假' 替换为 '--':UPDATE users SET username=REPLACE(username,'病假','--') WHERE username LIKE '%病假%';
说明: table_name —— 表的名字 field_name —— 字段名 from_str —— 需要替换的字符串 to_str —— 替换成的字符串
2.1.replace into函数 replace具备替换拥有唯一索引或者主键索引重复数据的能力,也就是如果使用replace into插入的数据的唯一索引或者主键索引与之前的数据有重复的情况,将会删除原先的数据,然后再进行添加。 语法:replace into table( col1, col2, col3 ) values ( val1, val2, val3 ) 语义:向table表中col1, col2, col3列replace数据val1,val2,val3 实例:
REPLACE INTO users (id,name,age) VALUES(123, ‘chao’, 50);
注意:使用replace into函数将删除原有的数据,而不是重复的不插入
参考:https://www.cnblogs.com/libin6505/p/10422910.html
3.通过表数据是否存在,不存在则执行插入操作 实例:
insert into actor(actor_id,first_name,last_name,last_update) --------actor_id为主键
select '3','ED','CHASE','2006-02-15 12:34:33'
from dual -------mysql内置的一张表,可以直接用
where not exists(select * from actor where actor_id = '3')