MySQL刷题-新知识-01

刷题总结1.0

1.union all 和 union

  • union用于合并两个或多个select语句的结果集
  • union内部的select语句必须拥有相同数量的列
    • 同时,列也必须拥有相似的数据类型
    • 同时,每条select语句中的列的顺序必须相同
  • union操作符选取不同的值,即union是去重的;而union all 是不去重的
  • union结果集的列名 == union中第一个select语句中的列名

2.round()、floor() 、ceiling()

1.round(value,n)

  • 对value进行**运算——>取n位小数**
  • 取小数时,进行四舍五入计算

2.floor(value)

  • 返回 <= value 的最小整数

3.ceiling(value)

  • 返回 >= value 的最小整数

3.日期函数

  • curdate()——返回当前日期
  • curtime()——返回当前时间
  • now()————返回当前日期和时间
  • year(date)——返回date的年份
  • month(date)—返回date的月份
  • day(date)——返回date的日期
  • date_add(date,interval exper type)——返回在date的基础上加上一个expr大小type类型的日期
  • datediff(date1,date2)——date1-date2的天数(可以是负数)

4.case函数的两种用法

1.有单值表达式

CASE   <单值表达式>
        WHEN <表达式值> THEN <SQL语句或者返回值>
        WHEN <表达式值> THEN <SQL语句或者返回值>
        ...
        WHEN <表达式值> THEN <SQL语句或者返回值>
        ELSE <SQL语句或者返回值>
END  命名
  • 单值表达 = when之后的表达式值 ,就返回 then 后的语句
  • 最后都没有,就返回else后的语句
  • end 之后的是该项的替代命名
  • 缺点:只能做=比较,不能做>或< 或<>比较

1.无单值表达式

  • CASE    WHEN <表达式> THEN <SQL语句或者返回值>
            WHEN <表达式> THEN <SQL语句或者返回值>
            ...
            WHEN <表达式> THEN <SQL语句或者返回值>
            ELSE <SQL语句或者返回值>
    END  命名
    

5.if判断的两种用法

1.三个条件

  •  IF(expr1,expr2,expr3)
    
    • 如果 expr1 是TRUE,则返回expr2, 否则返回expr3
    • IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

2.两个条件(IFNULL)

  • IFNULL(expr1,expr2)
    
    • 假如 expr1 不为 NULL,就返回 expr1,否则返回 expr2。
    • IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

3.两个条件(NULLIF)

  • NULLIF(expr1,expr2)
    
    • 如果 expr1 = expr2 成立,那么返回值为NULL,否则返回值为 expr1。

6.字符串截取

1.left()

  • left(str,length)从左侧开始截取

    • left(被截取字符串, 截取长度)

    • SELECT LEFT('www.yuanrengu.com',8)
      

      结果为:www.yuan

2.right()

  • right(str, length)从右侧开始截取

    • right(被截取字符串, 截取长度)

    • SELECT RIGHT('www.yuanrengu.com',6)
      

      结果为:gu.com

3.substring(str,pos, length)

  • substring(被截取字符串, 从第几位开始截取,截取长度)

  • SELECT SUBSTRING('www.yuanrengu.com', 9, 3)
    

    结果为:ren

4.substring_index(str, delim, count)

  • substring_index(被截取字符串,关键字,关键字出现的次数)

  • SELECT SUBSTRING_INDEX('www.yuanrengu.com', '.', 2);
    

    结果为:www.yuanrengu

  • count可以为负数,从末尾开始往前截取

  • 如果关键字不在,则返回整个字符串

7.having和where的区别

  • having 是在分组后对数据进行过滤,where 是在分组前对数据进行过滤
  • having后面可以使用分组函数(统计函数),where后面不可以使用分组函数
  • where 是对分组前记录的条件,如果某行记录没有满足where字句的条件,那么这行记录不会参加分组;而having是对分组后数据的约束

8.sql书写顺序

select——>from——>where——>group by——>having——>order by——>limit

9.窗口函数

1.语法

  • <窗口函数> over (partition by <用于分组的列名>
                    order by <用于排序的列名>)
    

2.<窗口函数>的位置

  • 专用窗口函数,比如rank, dense_rank, row_number等
  • 聚合函数,如sum. avg, count, max, min等
3.功能
  • 具有分组和排序功能
  • 不减少原表行数
  • 原则上只在selec子句中

4.rank, dense_rank, row_number的区别

在这里插入图片描述

5.额外补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值