MySql避免重复插入sql语句

本文详细介绍了Mysql中的几种特殊SQL语法,包括IGNORE、REPLACE、ON DUPLICATE KEY UPDATE、DELAYED、INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN以及UNION的用法与特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

恶补下Mysql中的几个特殊sql语法,避免面试过程中被人问到,答不上来
1、ignore(primary key)
用例:
insert ignore into user_table(id,name,age) values(1,'wpf',20);
若记录已经存在,则忽略本次操作,返回影响行为0,否则执行插入操作,返回影响行为1
2、replace(primary key)
用例:
replace into user_table(id,name,age) values(1,'xiaoming',20);
若记录已经存在,则删除老的记录,插入此新的记录,否则直接插入,返回值表示插入和删除的记录总和,例如用例中已经存在了,则返回的影响行数为2
3、on duplicate key update(primary key | unique索引)
用例:
insert into user_table(id,name,age) values(1,'lisi',23) on duplicate key update age= values(age) + 1;
若记录已经存在,则执行后面的update操作,否则执行插入操作
存在执行的等价操作为:
update user_table set age = 24 where id=1;
若name行也有索引,则执行的等价操作为:
update user_table set age = 24 where id=1 or name='lisi' limit 1;
4、delayed
用例:
insert delayed into user_talbe(id,name,age) values(1,'wpf',20);
立即返回执行结果,但真正的插入操作被延缓执行了,只有在服务器发现没有读取操作时才会从延迟队列中读取并执行插入操作。
5、内联(inner join)
用例:
select * from T1 inner join T2 on T1.uid=T2.uid;
等价操作:
select * from T1,T2 where T1.uid=T2.uid;
6、左外连接(left outer join),右外连接(right outer join),全外连
接(full outer join)
用例:
select * from T1 left outer join T2 on T1.uid=T2.uid;
T1表全显示,并补全显示T2.uid=T1.uid的信息,若T2中不存在则显示NULL
select * from T1 right outer join T2 on T1.uid=T2.uid;
T2表全显示,并补全显示T1.uid=T2.uid的信息,若T1中不存在则显示NULL
select * from T1 full outer join T2 on T1.uid=T2.uid;
T2,T1全显示,若T1.uid=T2.uid,则合并一行显示,否则显示T1 NULL / T2 NULL
7、组合(union)
用例:
select uid,name from t1 union select uid,name from t2 order by uid;
将两个查询结果合并显示,若不想去重可以使用union all。注意使用union时要求两个select查询的信息相同,包括字段名,字段类型(若可相互转换也可以),聚合函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值