码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2020-06-16 20:40:12      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:mount   业务   date   last   哈哈   int   --   基于   常用   

实用的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语句

标签:mount   业务   date   last   哈哈   int   --   基于   常用   

原文地址:https://www.cnblogs.com/LQZ888/p/13143706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!