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
SELECT a.`user_name`,a.`over`,b.`over` FROM user1 a INNER JOIN user2 b ON a.`user_name`=b.`user_name` ;
Join 操作的类型 —— Inner Join
内连接 Inner join 基于连接谓词将两张表(如 A 和 B)的列组合在一起,产生新的结果表。
SQL 标准中 Join 的类型
如何正确的使用 Join 从句
举例中使用的表如下:西天取经四人组 VS 悟空的朋友们
正确使用 SQL 很重要吗?
增加数据库处理效率,减少应用相应时间。
减少数据库服务器负载,增加服务器稳定性。
减少服务器间通讯的网络流量。
SQL 开发技巧着重于 DML 语句
常见的 SQL 语句类型
SQL 语言介绍
SQL 语言的发展
cross join(显示笛卡尔积)A表 X B表
full join
Mysql 不支持full join:解决方案
left join + union(可去除重复数据)+ right join
左连接
理解
应用
默认查出左表的所有数据,右表关联不上的数据会显示为NULL