chapter 13
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 创建联结
再次强调完全限定列名的重要性。