3-1 如何实现分组选择数据







2-8 使用join优化聚合子查询





2-7 使用join优化子查询




2-6 使用join更新表






2-5 join从句—交叉连接



2-4 join从句—全连接




2-3 join从句—右外连接




2-2 join从句—左外连接




2-1 join从句—内连接





1-2 SQL语句分类



1-1 SQL发展历程



mysql 中 不能更新在from 从句中出现的表。
交叉连接 cross join

全连接 full outer join
mysql中不支持 full outer join


连接
1、内连接 inner join 交集
2、外连接 outer join
左外连接 left outer join:分两种情况
右外连接 right outer join:分两种情况
注意理解 后面的where 语句

ddl
1、datagripe可以直接查看ddl语言;
2、比如触发器解决的问题业务问题,还有复杂的sql行转列类似
问题:如何查询出四人组中打怪最多的日期?

使用 JOIN 优化聚合子查询
引入一张新表,按日期记录四人组中每个人打怪的数量

使用 JOIN 优化子查询

使用 JOIN 优化子查询

使用 Join 来解决问题

如何更新使用过滤条件中包括自身的表?
情景:
把同时存在于取经四人组和悟空兄弟表中的记录的人在取经四人组表中的 over 字段更新为“齐天大圣”。

Join 操作的类型 —— Cross Join
交叉连接(cross join),又称笛卡尔连接(cartesian join)或
叉乘(Product),如果 A 和 B 是两个集合,它们的交叉连接就记为:A×B.
Join 操作的类型 —— Full Join 如何解决?

Join 操作的类型 —— Full Join 那么问题来了!!

Join 操作的类型 —— Full Join

查询悟空的结拜兄弟中那些人没有去取经?

Join 操作的类型 —— Right Outer Join

查询取经四人组中那些人不是悟空的结拜兄弟?
SELECT a.`user_name`,a.`over`,b.`over` FROM user1 a LEFT JOIN user2 b ON a.`user_name`=b.`user_name` WHERE b.user_name IS NULL
Join 操作的类型 —— Left Outer Join
