首页 > 数据库 >mysql8其它新特性

mysql8其它新特性

时间:2022-12-13 11:37:48浏览次数:65  
标签:RANK 其它 函数 mysql8 expr 公用 VALUE 特性 表达式


文章目录

  • ​​MySQL8.0新特性​​
  • ​​新特性1:窗口函数​​
  • ​​序号函数​​
  • ​​ROW_NUMBER()函数​​
  • ​​RANK()函数​​
  • ​​DENSE_RANK()函数​​
  • ​​分布函数​​
  • ​​PERCENT_RANK()​​
  • ​​CUME_DIST()函数​​
  • ​​前后函数​​
  • ​​LAG(expr,n)函数​​
  • ​​LEAD(expr,n)函数​​
  • ​​首尾函数​​
  • ​​FIRST_VALUE(expr)函数​​
  • ​​LAST_VALUE(expr)函数​​
  • ​​其它函数​​
  • ​​NTH_VALUE(expr,n)函数​​
  • ​​NTILE(n)函数​​
  • ​​新特性2:公用表表达式​​
  • ​​普通公用表表达式​​
  • ​​递归公用表表达式​​

MySQL8.0新特性

MySQL从5.7版本直接跳跃发布了8.0版本,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。

新特性1:窗口函数

可以分组,而且可以再分组内排序。另外,窗口函数不会因为分组而减少原表的行数,这对我们在原表数据的基础上进行统计和排序非常有用。
窗口函数的语法结构:
​​​函数 OVER([PARTITION BY 字段名 ORDER BY 字段名 ASC|DESC])​​​ 或者是
​函数 OVER 窗口名 ... WINDOW 窗口名 AS ([PARTITION BY 字段名 ORDER BY 字段名 ASC|DESC])​

序号函数

ROW_NUMBER()函数

举例:查询goods数据表中每个商品分类下价格降序排列的各个商品信息。

mysql8其它新特性_窗口函数


mysql8其它新特性_MySQL_02


mysql8其它新特性_新特性_03


mysql8其它新特性_窗口函数_04

RANK()函数

使用Rank()函数能够对序号进行并列排序,并且会跳过重复的序号,比如需要为1,1,3

mysql8其它新特性_MySQL_05


mysql8其它新特性_mysql_06

DENSE_RANK()函数

mysql8其它新特性_mysql_07


mysql8其它新特性_新特性_08

分布函数

PERCENT_RANK()

等级值百分比函数: ​​(rank - 1) / (rows - 1)​​ 其中,rank的值为使用RANK函数产生的序号,rows的值为当前窗口的总计录值。

mysql8其它新特性_新特性_09

mysql8其它新特性_MySQL_10


mysql8其它新特性_MySQL_11

CUME_DIST()函数

主要用于查询小于或等于某个值的比例。

mysql8其它新特性_数据库_12


mysql8其它新特性_mysql_13

前后函数

LAG(expr,n)函数

返回当前行的前n行的expr的值。

mysql8其它新特性_窗口函数_14


mysql8其它新特性_窗口函数_15


mysql8其它新特性_窗口函数_16


mysql8其它新特性_mysql_17

LEAD(expr,n)函数

mysql8其它新特性_MySQL_18


mysql8其它新特性_新特性_19


mysql8其它新特性_数据库_20


mysql8其它新特性_mysql_21

首尾函数

FIRST_VALUE(expr)函数

FIRST_VALUE(expr)函数返回第一个expr的值

mysql8其它新特性_mysql_22


mysql8其它新特性_MySQL_23

LAST_VALUE(expr)函数

FIRST_VALUE(expr)函数返回最后一个expr的值

其它函数

NTH_VALUE(expr,n)函数

NTH_VALUE(expr,n)函数返回第n个expr的值

mysql8其它新特性_数据库_24


mysql8其它新特性_窗口函数_25

NTILE(n)函数

将分区中的有序数据分为n个桶,记录桶编号

mysql8其它新特性_窗口函数_26


mysql8其它新特性_MySQL_27

新特性2:公用表表达式

公用表表达式的作用是可以替代子查询,而且可以被多次引用。递归公用表表达式对查询有一个共同根节点的树形结构数据非常高效,可以轻松搞定其他查询方式难以处理的查询。

普通公用表表达式

语法结构:

WITH CTE名称
AS (子查询)
SELECT|DELETE|UPDATE 语句;

mysql8其它新特性_MySQL_28


mysql8其它新特性_数据库_29


CTE实现

mysql8其它新特性_mysql_30


mysql8其它新特性_新特性_31

递归公用表表达式

语法结构:

WITH RECURSIVE
CTE名称 AS (子查询)
SELECT|DELETE|UPDATE 语句;

案例:针对于我们常用的employees表,包含employee.id, last_ name和manager.id三个字段。如果a是b的管理者,那么,我们可以把b叫做a的下属,如果同时b又是c的管理者,那么c就是b的下属,是a的下下属。

mysql8其它新特性_窗口函数_32


mysql8其它新特性_窗口函数_33


mysql8其它新特性_mysql_34


mysql8其它新特性_mysql_35


标签:RANK,其它,函数,mysql8,expr,公用,VALUE,特性,表达式
From: https://blog.51cto.com/u_15911055/5933475

相关文章