13.1 数据分组

如果要将数据分为多个逻辑组怎么办??

要用数据分组

13.2 创建分组

使用group by子句。group by会指示对mysql进行分组,然后对每个组进行聚集。

注意:使用group by时,如果在select使用了表达式,则必须在group by 中使用相同的表达式,不可用别名

13.2 过滤分组

因where条件筛选中并没有分组概念,需要用having进行分组过滤,having支持所有的where操作符。

having与where的区别:where过滤行,having过滤分组

13.4 分组和过滤

order by 与 group by

一般在使用group by时,也要用order by子句排序,千万不要依赖group by的默认排序。

select子句顺序,

chapter 14 使用子查询
14.1 子查询subquery

子查询的概念: 嵌套在其他查询中的查询。

14.2 利用子查询进行过滤

在select语句中,子查询总是从内向外处理。但包含子查询的SQL语句难以调试和阅读

14.3 作为计算字段使用子查询

相关子查询:涉及到外部查询的子查询,在where条件中应使用完全限定列名,防止出现错误的查询结果。

常见使用场景:

where子句中的IN操作符,以及填充计算列

chapter 15 联结表
15.1 联结(join)表

15.1.1 为什么要出现关系表?

场景模拟:将相关源的数据分类保存

主键primary key与外键foreign key的概念:主键为唯一标识

外键是某表中的一列,包含了另一张表的主键值,定义了两表间的关系

如何维护引用完整性?通过在表定义中指定主键和外键实现。

15.2 创建联结

再次强调完全限定列名的重要性。