MySQL 视频课 · 50 集 / 组

DQL 基础:基础查询、条件查询、聚合函数

P15–P17 · 共 3 集 · 每集独立 anchor,可直接从目录跳到本页某一集

视频 p=15 · 时长 14:26

P15 15. 基础-SQL-DQL-基础查询

讲义 2.6.1 基本语法 / 2.6.2 基础查询 p41–42

按主题对应,非逐句切分

来源与核对说明

以同版讲义的公开镜像核对章节与页码(镜像非官方出品);非逐字稿,示例为原创补充。

本页是学习笔记,不等同于视频逐字稿。原声字幕未取得(匿名接口字幕轨为空且需登录,未使用任何账号),也没有逐句讲解记录;讲义只按节与页码对应,切点未逐句确证。

讲义索引:p41–42 · 2.6.1 基本语法 / 2.6.2 基础查询 · 切点 notexact

讲义是第三方公开镜像(95 页 PDF),不是官方原件;这里只用它核对章节顺序与页码,不转载正文。

完整来源说明与变更记录 →

看视频,对照阅读:在新标签打开原视频(p=15)

查询的第一步:选列、改列名、去重。

复习模式:快速跳知识点(详解在下方各节)

复习顺序:先看“一句话理解”能否复述,再扫步骤,最后做自测;答不出时回到小例与易错。

一句话理解

从这一集开始查数据。基础查询解决三件事:查哪些列、列名怎么显示、重复值要不要去掉。

按这 4 步做

  1. 语法骨架是 SELECT 字段列表 FROM 表名;。字段列表写具体列名,或写 * 表示所有列;* 方便,但会把不需要的大字段也查出来。
  2. 起别名用 AS:SELECT name AS 姓名 FROM ...,结果表头就变成“姓名”。AS 可以省略,写个空格也行,但显式写更好读。
  3. 去重是在字段前加 DISTINCT:SELECT DISTINCT dept_id FROM employee;,相同的值只留一行。它作用于整个字段列表,不是只作用于紧挨着的那一列。
  4. 画面里的例子是 select name, workno, age from emp;,只取三列,结果按建表时的列顺序显示。

小例

先准备本集练习数据:p15.sql · 练习库说明

SQL 示例
SELECT name AS 姓名, salary AS 月薪
FROM employee;

结果两列,表头是“姓名”和“月薪”,共 4 行。第 4 行小李的月薪显示 NULL——NULL 表示“没有值”,不是 0;这也是后面 COUNT 要区分“数行”和“数列”的原因。

易错点

  • 以为 SELECT * 更快。它往往更慢,因为多读了用不到的列,还多传了网络数据。
  • 把 NULL 当 0 或空字符串。它参与运算结果还是 NULL。
  • 以为 DISTINCT 只去重一列。DISTINCT a, b 去重的是 (a,b) 组合。

30 秒速记

SELECT 列 FROM 表;* 是所有列;AS 起别名;DISTINCT 去重;NULL 不是 0。

自测(2 题,先答再展开)

自测 1:SELECT name AS 姓名 里的 AS 改变了数据吗?

没有。它只改结果集的列标题,表里的列名和数据都不变。别名的作用是让输出更好读,或在导出、报表时给出业务名称。

自测 2:SELECT DISTINCT dept_id, salary 会得到什么?

得到不重复的 (dept_id, salary) 组合。同一部门但薪水不同算两条;只有两列都相同才合并。

材料与来源

展开材料出处、讲义页码与证据等级
材料类型 / 位置支持了什么
B站原视频 P15《15. 基础-SQL-DQL-基础查询》平台视频页 · P15标题、时长与分 P 信息取自平台公开页面;仅作外链,不在站内播放
本集采样画面 p15_t20.jpg(约 173s)平台视频页 · P15 / 约 173s已人工查看该帧:幻灯片“SQL—DQL-语法”给出 SELECT/FROM/WHERE/GROUP BY/HAVING/ORDER BY/LIMIT 的完整骨架;只证明这一画面,不代表整集讲解
本集采样画面 p15_t70.jpg(约 605s)平台视频页 · P15 / 约 605s已人工查看该帧:Workbench 中执行基本查询第 1 题:select name, workno, age from emp,结果网格三列四行数据;只证明这一画面,不代表整集讲解

以同版讲义公开镜像核对:讲义 2.6.1 基本语法 / 2.6.2 基础查询(p38–41)。原声字幕未取得(匿名接口字幕轨为空且需登录),讲师逐句讲解未核;本页示例、表与数字为站内原创,不是课堂原表。

讲义对照:讲义 2.6.1 基本语法 / 2.6.2 基础查询 · p41–42(公开镜像;按主题对应,切点 notexact)

  • 画面静帧 9 帧,采样点 0:12–14:13 / 全片 14:26(只用于确认画面主题,不作内容边界)
  • 原声字幕未取得:匿名接口字幕轨为空且需登录,未使用任何账号

等级含义:平台视频页 / 官方文档 / 课件 = 原始材料;二手整理 = 参考;推断 = 未经核实。站内补充的解释与练习会在此说明。

视频 p=16 · 时长 17:57

P16 16. 基础-SQL-DQL-条件查询

讲义 2.6.3 条件查询 p42–45

按主题对应,非逐句切分

来源与核对说明

以同版讲义的公开镜像核对章节与页码(镜像非官方出品);非逐字稿,示例为原创补充。

本页是学习笔记,不等同于视频逐字稿。原声字幕未取得(匿名接口字幕轨为空且需登录,未使用任何账号),也没有逐句讲解记录;讲义只按节与页码对应,切点未逐句确证。

讲义索引:p42–45 · 2.6.3 条件查询 · 切点 notexact

讲义是第三方公开镜像(95 页 PDF),不是官方原件;这里只用它核对章节顺序与页码,不转载正文。

完整来源说明与变更记录 →

看视频,对照阅读:在新标签打开原视频(p=16)

只取需要的行。条件写对,才不会多查或少查。

复习模式:快速跳知识点(详解在下方各节)

复习顺序:先看“一句话理解”能否复述,再扫步骤,最后做自测;答不出时回到小例与易错。

一句话理解

只查需要的行,就要在 WHERE 里写条件。这一集把比较运算符、逻辑运算符和几个特殊写法过一遍。

按这 4 步做

  1. 基本比较有六个:=、>、>=、<、<=、<> 或 !=(不等于)。字符串和日期加引号,数字不用。
  2. 范围和列表:BETWEEN 15 AND 20 含两端,等价于 >=15 AND <=20;IN (18,20,40) 是多选一,比一串 OR 短。
  3. 模糊与空值:LIKE 配 %(任意多个字符)和 _(一个字符);空值只能写 IS NULL 或 IS NOT NULL。
  4. 多条件用 AND/&&、OR/||、NOT/! 组合。AND 先算、OR 后算,混用加括号最稳。

小例

先准备本集练习数据:p16.sql · 练习库说明

SQL 示例
SELECT id, name, age, salary
FROM employee
WHERE age BETWEEN 22 AND 30
  AND salary IS NOT NULL;

两个条件同时成立才留下:年龄在 22–30(含 22、30),并且薪水不为空。结果是小林(22)、小周(25)、小陈(30)三行;小李年龄 21 不在范围,薪水又是 NULL,被两条条件分别挡掉。

易错点

  • 写 salary = NULL,结果永远查不到。NULL 的比较要用 IS NULL。
  • BETWEEN 写反(30 AND 22)不报错,只返回空结果,容易误判成“没数据”。
  • LIKE '%林' 匹配结尾,LIKE '林%' 匹配开头,方向写反就查不到。
  • AND 和 OR 混用不加括号。默认 AND 先算,结果常和预期不一致。

30 秒速记

六个比较符;BETWEEN 含端点;IN 多选一;LIKE 的 % 和 _;空值用 IS NULL;AND 先于 OR。

自测(2 题,先答再展开)

自测 1:为什么 WHERE salary = NULL 查不到任何行?

NULL 表示“未知”,任何与 NULL 的相等比较结果都是 UNKNOWN,不是 TRUE,所以行不会被选中。判断空值必须用 IS NULL 或 IS NOT NULL。

自测 2:BETWEEN 15 AND 20 和 >= 15 AND <= 20 等价吗?

对数字和日期等价,都包含两端。注意 BETWEEN 的下界必须写在前面,写反了虽然不报错,但会得到空结果。

材料与来源

展开材料出处、讲义页码与证据等级
材料类型 / 位置支持了什么
B站原视频 P16《16. 基础-SQL-DQL-条件查询》平台视频页 · P16标题、时长与分 P 信息取自平台公开页面;仅作外链,不在站内播放
本集采样画面 p16_t30.jpg(约 322s)平台视频页 · P16 / 约 322s已人工查看该帧:Workbench 中条件查询练习:where age = 88、age < 20、age <= 20、idcard is not null、age != 88、between 15 and 20;只证明这一画面,不代表整集讲解
本集采样画面 p16_t80.jpg(约 861s)平台视频页 · P16 / 约 861s已人工查看该帧:幻灯片“DQL-条件查询”:SELECT 字段列表 FROM 表名 WHERE 条件列表,并列出比较运算符(含 LIKE、IS NULL)与逻辑运算符(AND/OR/NOT);只证明这一画面,不代表整集讲解
MySQL 8.0 Reference Manual: Comparison Operators官方文档语法条目备查,未逐字引用

以同版讲义公开镜像核对:讲义 2.6.3 条件查询(p42–45)。原声字幕未取得(匿名接口字幕轨为空且需登录),讲师逐句讲解未核;本页示例、表与数字为站内原创,不是课堂原表。

讲义对照:讲义 2.6.3 条件查询 · p42–45(公开镜像;按主题对应,切点 notexact)

  • 画面静帧 9 帧,采样点 0:12–17:44 / 全片 17:57(只用于确认画面主题,不作内容边界)
  • 原声字幕未取得:匿名接口字幕轨为空且需登录,未使用任何账号

等级含义:平台视频页 / 官方文档 / 课件 = 原始材料;二手整理 = 参考;推断 = 未经核实。站内补充的解释与练习会在此说明。

视频 p=17 · 时长 6:39

P17 17. 基础-SQL-DQL-聚合函数

讲义 2.6.4 聚合函数 p45–46

按主题对应,非逐句切分

来源与核对说明

以同版讲义的公开镜像核对章节与页码(镜像非官方出品);非逐字稿,示例为原创补充。

本页是学习笔记,不等同于视频逐字稿。原声字幕未取得(匿名接口字幕轨为空且需登录,未使用任何账号),也没有逐句讲解记录;讲义只按节与页码对应,切点未逐句确证。

讲义索引:p45–46 · 2.6.4 聚合函数 · 切点 notexact

讲义是第三方公开镜像(95 页 PDF),不是官方原件;这里只用它核对章节顺序与页码,不转载正文。

完整来源说明与变更记录 →

看视频,对照阅读:在新标签打开原视频(p=17)

把多行算成一个数,顺便理解 NULL 对统计的影响。

复习模式:快速跳知识点(详解在下方各节)

复习顺序:先看“一句话理解”能否复述,再扫步骤,最后做自测;答不出时回到小例与易错。

一句话理解

聚合函数把多行压成一个数:一共多少人、平均多少、最大最小、总和。这一集讲 COUNT、AVG、MAX、MIN、SUM。

按这 4 步做

  1. 五个函数各管一件事:COUNT() 数行、AVG() 平均、MAX() 最大、MIN() 最小、SUM() 求和。参数写列名,COUNT(*) 数的是行。
  2. 它们都把一整列(或整张表)算成一个值,所以不写 GROUP BY 时,结果只有一行。
  3. 关键差别:COUNT(*) 数所有行,COUNT(列名) 跳过该列为 NULL 的行;AVG 和 SUM 同样忽略 NULL。
  4. 所以“平均薪水”用 AVG(salary) 时,没填薪水的人不参与分母。想按“包括没填的人”算,要先想清楚业务定义。

小例

先准备本集练习数据:p17.sql · 练习库说明

SQL 示例
SELECT COUNT(*) AS 总人数,
       COUNT(salary) AS 有薪水人数,
       AVG(salary) AS 平均薪水
FROM employee;

结果一行三列:总人数 4、有薪水人数 3、平均薪水 10000.00。因为小李的 salary 是 NULL,被 COUNT(salary) 和 AVG 跳过;10000 =(8000+10000+12000)÷3,不是除以 4。看这三个数就能理解 NULL 对统计的影响。

易错点

  • 以为 COUNT(列) 和 COUNT(*) 一样。有 NULL 时结果会差。
  • 把 AVG 的分母当总行数。它只算非 NULL 的行。
  • 在 WHERE 里写 WHERE COUNT(*) > 3。聚合函数不能放在 WHERE,这类筛选要等 GROUP BY/HAVING(后续课)。

30 秒速记

COUNT 数、AVG 均、MAX/MIN 极值、SUM 和;不分组只出一行;聚合忽略 NULL。

自测(2 题,先答再展开)

自测 1:员工 4 人,其中 1 人薪水为 NULL,COUNT(*) 和 COUNT(salary) 各是多少?

COUNT(*) 是 4,COUNT(salary) 是 3。前者数行,后者只数该列非 NULL 的值。

自测 2:为什么 AVG(salary) 不等于 SUM(salary)/COUNT(*)?

AVG 的分母是 COUNT(salary),即非 NULL 的行数;COUNT(*) 把 NULL 行也算进分母,会把平均值拉低。两种算法对应不同的业务口径。

材料与来源

展开材料出处、讲义页码与证据等级
材料类型 / 位置支持了什么
B站原视频 P17《17. 基础-SQL-DQL-聚合函数》平台视频页 · P17标题、时长与分 P 信息取自平台公开页面;仅作外链,不在站内播放
本集采样画面 p17_t30.jpg(约 119s)平台视频页 · P17 / 约 119s已人工查看该帧:Workbench 中“聚合函数”练习:注释列出 COUNT/AVG/MAX/MIN/SUM 五项统计任务,左侧为 emp 表;只证明这一画面,不代表整集讲解
MySQL 8.0 Reference Manual: Aggregate Functions官方文档语法条目备查,未逐字引用

以同版讲义公开镜像核对:讲义 2.6.4 聚合函数(p45–46)。原声字幕未取得(匿名接口字幕轨为空且需登录),讲师逐句讲解未核;本页示例、表与数字为站内原创,不是课堂原表。

讲义对照:讲义 2.6.4 聚合函数 · p45–46(公开镜像;按主题对应,切点 notexact)

  • 画面静帧 9 帧,采样点 0:12–6:26 / 全片 6:39(只用于确认画面主题,不作内容边界)
  • 原声字幕未取得:匿名接口字幕轨为空且需登录,未使用任何账号

等级含义:平台视频页 / 官方文档 / 课件 = 原始材料;二手整理 = 参考;推断 = 未经核实。站内补充的解释与练习会在此说明。