MySQL 中常用函数使用

06-01 1295阅读

IF()

IF函数根据判断条件是否成立进行选择执行,成立时执行一条语句,不成立时执行另一条语句

语法结构:

IF(condition, value_if_true, value_if_false)

参数说明

  • condition: 判断条件
  • value_if_true: 如果 condition 的结果为 TRUE,返回该值
  • value_if_false: 如果 condition 的结果为 FALSE,返回该值

    举例:

    SELECT id, name,
           IF(age 0
      THEN '1 > 0'
      WHEN 2 > 0
      THEN '2 > 0'
      ELSE '3 > 0'
      END
    #输出结果:1 > 0

    如果表达式 expr 的值等于 e1,返回 value1;如果等于 e2,则返回 value2。否则返回 valueN。

    SELECT CASE xfflag 
      WHEN 1 THEN '结算账目'
      WHEN 2 THEN '消费账目'
    ELSE '类型不对'

    INSERT

    insert into

    插入数据:插入数据时数据库会检查主键,如果出现重复会报错。

    适用场景:适用于直接数据插入。

    # 第一种方式
    insert into 表名(字段名1,字段名2,...) values(值1,值2,...);
     
    # 第二种方式:按照表中所有字段进行插入数据,一定要与字段在表中定义的顺序一致
    insert into  表名 values(值1,值2,...);

    replace into

    插入替换数据:数据表中有 PrimaryKey,或者 unique 索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和 insert into 一样。

    适用场景:适用于第一次数据插入时有些字段的数据出现了丢失,再次插入的时候希望通过唯一键更新数据而不再重复插入新数据。

    # 第一种方式
    replace into 表名(字段名1,字段名2,...) values(值1,值2,...);
     
    # 第二种方式:按照表中所有字段进行插入数据,一定要与字段在表中定义的顺序一致
    replace into 表名 values(值1,值2,...);

    insert ignore

    插入忽略数据:如果已经存在相同的记录,则忽略当前新数据;

    适用场景:适用于数据已经插入,再次插入的时候希望通过唯一键信息,跳过已经插入的数据。

    MySQL 中常用函数使用
    (图片来源网络,侵删)
    # 第一种方式
    insert ignore into 表名(字段名1,字段名2,...) values(值1,值2,...);
     
    # 第二种方式:按照表中所有字段进行插入数据,一定要与字段在表中定义的顺序一致
    insert ignore into 表名 values(值1,值2,...);

    注:对于以上三种方法,如果表中没有设置主键或唯一索引;则效果都是一样的,即直接插入数据

    UPSERT 

    INSERT INTO … ON DUPLICATE KEY UPDATE 是 MySQL 中一种用于插入数据并处理重复键冲突的语法。

    MySQL 中常用函数使用
    (图片来源网络,侵删)

    这个语法适用于在 insert 的时候,如果 insert 的数据会引起唯一索引(包括主键索引)的冲突,即唯一值重复了,则不会执行 insert 操作,而执行后面的 update 操作,使用给定的新值来更新冲突行中的列。

    一般 Update子句可以使用 VALUES(col_name) 获取 insert 部分的值。也是项目中使用最多的方式。

    MySQL 中常用函数使用
    (图片来源网络,侵删)

    注意:VALUES()函数只在INSERT…UPDATE语句中有意义,其它时候会返回NULL。

    INSERT INTO student(Sno, Sname, Ssex, Sage, Sdept)
    VALUES("201215121", "李勇", "男", 30, "CS")
    on DUPLICATE key UPDATE Sage=values(Sage);
    mysql> select * from student;
    +-----------+--------+------+------+-------+
    | Sno       | Sname  | Ssex | Sage | Sdept |
    +-----------+--------+------+------+-------+
    | 201215121 | 李勇   | 男   |   18 | CS    |
    | 201215122 | 刘晨   | 女   |   19 | CS    |
    | 201215123 | 王敏   | 女   |   18 | MA    |
    | 201215125 | 张立   | 男   |   19 | IS    |
    +-----------+--------+------+------+-------+
    4 rows in set (0.00 sec)
    mysql> INSERT INTO student(Sno, Sname, Ssex, Sage, Sdept)
        -> VALUES("201215121", "李勇", "男", 30, "CS")
        -> on DUPLICATE key UPDATE Sage=values(Sage);
    Query OK, 2 rows affected (0.01 sec)
    mysql> select * from student;
    +-----------+--------+------+------+-------+
    | Sno       | Sname  | Ssex | Sage | Sdept |
    +-----------+--------+------+------+-------+
    | 201215121 | 李勇   | 男   |   30 | CS    |
    | 201215122 | 刘晨   | 女   |   19 | CS    |
    | 201215123 | 王敏   | 女   |   18 | MA    |
    | 201215125 | 张立   | 男   |   19 | IS    |
    +-----------+--------+------+------+-------+
    4 rows in set (0.00 sec)
    
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码