zoukankan      html  css  js  c++  java
  • MySQL中特别实用的几种SQL语句

    转载自:

    https://blog.csdn.net/qq_39390545/article/details/106690916

    1.插入或替换

      如果我们想插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。

      此时,可以使用"REPLACE INTO"语句,这样就不必先查询,再决定是否先删除再插入。

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

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

    REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) 
       VALUES (null, 'chenhaha', 30, '2020-06-11 20:00:20', '会员充值');

      因为主键transId自增, 此SQL没有指定主键, 所以上面的sql根据唯一索引username进行判断, 如果username="chenhaha"的数据不存在则创建, 否则先进行删除原数据然后插入.

    REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) 
       VALUES (1, 'chenhaha', 30, '2020-06-11 20:00:20', '会员充值');

      上面SQL指定了主键值, 所以根据主键进行插入或者替换的操作

    2.插入或更新

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

      注意事项:同上面的插入或替换,"INSERT INTO ... ON DUPLICATE KEY UPDATE ..."语句是基于唯一索引或主键来判断唯一(是否存在)的.

    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 ='充会员';

      此SQL中没有指定主键, 所以根据唯一索引username来判断username='chenhaha'的记录是否存在, 不存在就创建VALUES (null, 'chenhaha', 30, '2020-06-11 20:00:20', '充会员') 的数据, 如果存在就根据username='chenhaha'进行更新,  更行的字段和数据就是ON DUPLICATE KEY UPDATE 后面指定的

      如果指定了主键值, 则根据主键值进行插入或更新

    3.插入或忽略

      如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就啥事也不干直接忽略,此时,可以使用INSERT IGNORE INTO ...语句

      注意事项:同上面的插入或替换,"INSERT IGNORE INTO ..."语句是基于唯一索引或主键来判断唯一(是否存在)的.

    INSERT IGNORE INTO users_info (id, username, sex, age ,balance, create_time) 
       VALUES (null, 'chenhaha', '', 12, 0, '2020-06-11 20:00:20');

      根据此SQL中的唯一索引username='chenhaha'的数据是否在, 不存在就插入, 存在就什么也不干

  • 相关阅读:
    思念
    空白
    curl json string with variable All In One
    virtual scroll list All In One
    corejs & RegExp error All In One
    socket.io All In One
    vue camelCase vs PascalCase vs kebabcase All In One
    element ui 表单校验,非必填字段校验 All In One
    github 定时任务 UTC 时间不准确 bug All In One
    input range & color picker All In One
  • 原文地址:https://www.cnblogs.com/no-celery/p/13468764.html
Copyright © 2011-2022 走看看