MySQL中经常用到实用的几种SQL语句

Posted 逍遥知道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中经常用到实用的几种SQL语句相关的知识,希望对你有一定的参考价值。

实用的SQL
1.插入或替换
如果我们想插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。

情景示例:这张表存的每个客户最近一次交易订单信息,要求保证单个用户数据不重复录入,且执行效率最高,与数据库交互最少,支撑数据库的高可用。
此时,可以使用"REPLACE INTO"语句,这样就不必先查询,再决定是否先删除再插入。

"REPLACE INTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。
"REPLACE INTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。
"REPLACE INTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。

注意事项:如下SQL所示,需要在username字段上建立唯一索引(Unique),transId设置自增即可。

-- 20点充值
REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) 
   VALUES (null, chenhaha, 30, 2020-06-11 20:00:20, 会员充值);
 
-- 21点买皮肤
REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) 
   VALUES (null, chenhaha, 100, 2020-06-11 21:00:00, 购买盲僧至高之拳皮肤);

若username=‘chenhaha‘的记录不存在,REPLACE语句将插入新记录(首次充值),否则,当前username=‘chenhaha‘的记录将被删除,然后再插入新记录。

id不要给具体值,不然会影响SQL执行,业务有特殊需求除外。

2.插入或更新
如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就更新该记录,此时,可以使用"INSERT INTO ... ON DUPLICATE KEY UPDATE ..."语句:

情景示例:这张表存了用户历史充值金额,如果第一次充值就新增一条数据,如果该用户充值过就累加历史充值金额,需要保证单个用户数据不重复录入。
这时可以使用"INSERT INTO ... ON DUPLICATE KEY UPDATE ..."语句。

 

注意事项:同上,"INSERT INTO ... ON DUPLICATE KEY UPDATE ..."语句是基于唯一索引或主键来判断唯一(是否存在)的。如下SQL所示,需要在username字段上建立唯一索引(Unique),transId设置自增即可。

-- 用户陈哈哈充值了30元买会员
INSERT INTO total_transaction (t_transId,username,total_amount,last_transTime,last_remark) 
   VALUES (null, chenhaha, 30, 2020-06-11 20:00:20, 充会员) 
   ON DUPLICATE KEY UPDATE  total_amount=total_amount + 30, last_transTime=2020-06-11 20:00:20, last_remark =充会员;
 
-- 用户陈哈哈充值了100元买瞎子至高之拳皮肤
INSERT INTO total_transaction (t_transId,username,total_amount,last_transTime,last_remark) 
   VALUES (null, chenhaha, 100, 2020-06-11 20:00:20, 购买盲僧至高之拳皮肤) 
   ON DUPLICATE KEY UPDATE total_amount=total_amount + 100, last_transTime=2020-06-11 21:00:00, last_remark =购买盲僧至高之拳皮肤;

 

若username=‘chenhaha‘的记录不存在,INSERT语句将插入新记录,否则,当前username=‘chenhaha‘的记录将被更新,更新的字段由UPDATE指定。

 

原文链接:https://blog.csdn.net/qq_39390545/article/details/106690916

以上是关于MySQL中经常用到实用的几种SQL语句的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句的几种优化方法

测试工作中经常用到的几个Linux命令(第一弹)

mysql操作语句总结

mysql的几种SQL语句

mysql如何优化以下语句,查询耗时太久了?

解析Jquery取得iframe中元素的几种方法