MySQL 必知必会
朱晓峰
前摩根大通银行技术部副总裁、系统架构师
新⼈⾸单¥59.9
1437 人已学习
课程目录
已更新 32 讲 / 共 34 讲
0/4登录后,你可以任选4讲全文学习。
课前准备 (2讲)
开篇词 | 在实战中学习,是解锁MySQL技能的最佳方法
免费
环境准备 | 带你安装MySQL和图形化管理工具Workbench
实践篇 (13讲)
01 | 存储:一个完整的数据存储过程是怎样的?
02 | 字段:这么多字段类型,该怎么定义?
03 | 表:怎么创建和修改表?
04 | 增删改查:如何操作表中的数据?
05 | 主键:如何正确设置主键?
06 | 外键和连接:如何做关联查询?
07 | 条件语句:WHERE 与 HAVING有什么不同?
08 | 聚合函数:怎么高效地进行分组统计?
09 | 时间函数:时间类数据,MySQL是怎么处理的?
10 | 如何进行数学计算、字符串处理和条件判断?
11 | 索引:如何提高查询的速度?
12 | 事务:怎么确保关联操作正确执行?
13 | 临时表:复杂查询,如何保存中间结果?
进阶篇 (8讲)
14 | 视图:如何简化查询?
15 | 存储过程:如何提高程序的性能和安全性?
16 | 游标:对于数据集中的记录,该怎么逐条处理?
17 | 触发器:如何让数据修改自动触发关联操作,确保数据一致性?
18 | 权限管理:如何控制数据库访问,消除安全隐患?
19 | 日志(上):系统出现问题,如何及时发现?
20 | 日志(下):系统故障,如何恢复数据?
21 | 数据备份:异常情况下,如何确保数据安全?
优化篇 (5讲)
22 | 范式:如何消除冗余和高效存取?
23 | ER模型:如何理清数据库设计思路?
24 | 查询有点慢,语句该如何写?
25 | 表太大了,如何设计才能提高性能?
26 | 如何充分利用系统资源?
案例篇 (1讲)
27 | 手把手带你设计一个完整的连锁超市信息系统数据库(上)
特别放送 (3讲)
特别发送(一) | 经典面试题讲解第一弹
特别放送(二)| 经典面试题讲解第二弹
特别放送(三)| MySQL 8 都有哪些新特征?
MySQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

特别放送(三)| MySQL 8 都有哪些新特征?

朱晓峰 2021-05-13
你好,我是朱晓峰。今天,我来和你聊一聊 MySQL 8 的新特征。
作为应用最广泛的三大关系型数据库之一,MySQL 的背后有一个强大的开发团队,使 MySQL 能够持续迭代和创新,满足不断变化的用户需求。在 MySQL 8 中,就有很多新特征。
今天,我就给你介绍两个重要的新特征:窗口函数和公用表表达式(Common Table Expressions,简称 CTE)。它们可以帮助我们用相对简单的查询语句,实现更加强大的查询功能。

什么是窗口函数?

窗口函数的作用类似于在查询中对数据进行分组,不同的是,分组操作会把分组的结果聚合成一条记录,而窗口函数是将结果置于每一条数据记录中。一会儿我会借助一个例子来对比下,在此之前,你要先掌握窗口函数的语法结构。
窗口函数的语法结构是:
函数 OVER([PARTITION BY 字段])
或者是:
函数 OVER 窗口名 … WINDOW 窗口名 AS ([PARTITION BY 字段名])
现在,我借助一个小例子来解释一下窗口函数的用法。
假设我现在有这样一个数据表,它显示了某购物网站在每个城市每个区的销售额:
mysql> SELECT * FROM demo.test1;
+----+------+--------+------------+
| id | city | county | salesvalue |
+----+------+--------+------------+
| 1 | 北京 | 海淀 | 10.00 |
| 2 | 北京 | 朝阳 | 20.00 |
| 3 | 上海 | 黄埔 | 30.00 |
| 4 | 上海 | 长宁 | 10.00 |
+----+------+--------+------------+
4 rows in set (0.00 sec)
现在我想计算一下,这个网站在每个城市的销售总额、在全国的销售总额、每个区的销售额占所在城市销售额中的比率,以及占总销售额中的比率。
如果用分组和聚合函数,就需要分好几步来计算。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《MySQL 必知必会》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59.9
立即订阅
登录 后留言

精选留言(1)

  • freshswq
    1.建表语句:
    DROP TABLE
    IF
    EXISTS memtrans;

    CREATE TABLE
    IF
    NOT EXISTS memtrans (
    id INT PRIMARY KEY auto_increment,
    membername VARCHAR ( 20 ) NOT NULL,
    goodname VARCHAR ( 20 ) NOT NULL,
    actualvalue DECIMAL ( 10, 2 ) NOT NULL
    )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

    2.插入数据:
    insert into memtrans values(1,'张三','书',890);
    insert into memtrans values(2,'李四','笔',30);
    insert into memtrans values(3,'王五','书',89);

    3.数据查询:
    SELECT
    membername AS 会员名称,
    goodname AS 商品名称,
    actualvalue AS 销售金额,
    sum( actualvalue ) over ( PARTITION BY goodname ) AS 总计金额,
    actualvalue / sum( actualvalue ) over ( PARTITION BY goodname ) AS 销售占比
    FROM
    memtrans;
    2021-05-13
    1
收起评论
1
返回
顶部