MySql避免重复插入sql语句
2017-02-21 16:02
411 查看
恶补下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查询的信息相同,包括字段名,字段类型(若可相互转换也可以),聚合函数。
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查询的信息相同,包括字段名,字段类型(若可相互转换也可以),聚合函数。
相关文章推荐
- MySQL 语句级避免重复插入—— Insert Select Not Exist
- MySQL 语句级避免重复插入—— Insert Select Not Exist
- MySQL 语句级避免重复插入—— Insert Select Not Exist
- MySQL 语句级避免重复插入—— Insert Select Not Exist
- MySQL 语句级避免重复插入—— Insert Select Not Exist
- MySQL 语句级避免重复插入—— Insert Select Not Exist
- php 获取mysql中插入的id 和 sql语句查看是否有重复
- MySQL 语句级避免重复插入—— Insert Select Not Exist
- mysql忽略主键冲突、避免重复插入的几种方式
- 避免重复入库的插入记录方法-----mysql 使用记号
- mysql 忽略主键冲突、避免重复插入的几种方式
- MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
- mysql 忽略主键冲突、避免重复插入的几种方式
- mysql 一条sql语句插入多条记录
- (转)MySQL 查询重复出现次数最多的记录,按出现频率排序(SQL语句)
- mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的。 . .
- Mysql忽略主键冲突,避免重复插入的几种方式
- mysql如何用一条sql语句实现不存在就插入,存在的话则更新
- MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
- MYSQL避免重复插入