发表于: 2017-09-15 22:23:27
1 721
今天完成的事情:
1:因为某些表,字段,业务逻辑有些疑问,以及原型图不完整,方案评审延期至下星期一
2:继续看mysql的书,学习mysql相关知识
3:制作小课堂(部分)
明天计划的事情:
制作完成小课堂,看书,改方案(如果需要)
遇到的问题:
无
收获:
1:外联结
内联结之外比较中重要的就是外联结
外联结也是通过on子句使用联结键将两张表进行联结,同时从两张表中选取相应的列.基本的使用方法并没有改变,只是结果却又所不同
外联结要点:
1:选取出单张表中全部的信息
外联结和内联结的结果相比,不同点显而易见:结果的行数不一样.比如内联结的结果有13行,而外联结可能就有15行.
对于外联结来说,只要数据存在于某一张表当中,就能够读取出来.也就是所有的数据都会显示出来,即使他某些字段为null
2:每张表都是主表吗?
外联结还有一个非常重要的点,就是要把哪张表作为主表.最终的结果中会包含主表内所有的数据.
指定主表的关键字是left和right.
使用left时from子句中写在左边的表是主表
使用right时右侧的表是主表
例子:
select SS.id,SS.shopname,SS.amount,S.money from shopshohin as SS inner join shohin AS S on SS.shohin_id=S.shohin_id;
from shohin as S left outer join shopshohin as SS
on S.id=SS.id
2:多表联结
通常联结只涉及两张表,但有时也会出现必须同时联结三张以上表的情况,原则上联结表的数量并没有限制.
在原本代码基础上,多加一份inner join和on xx.id=xxx.id
3:交叉联结
其实实际业务中很少使用交叉联结,不过交叉联结是所有联结运算的基础
交叉联结的集合运算符是cross join(笛卡儿积)
进行交叉联结时无法使用内联结和外联结中所使用的on子句,这是因为交叉联结是对两张表中的全部记录进行交叉组合,因此结果中的记录数通常是两张表中行数的乘积.假设一张表有8条记录,另一张表有13条记录,那么结果就包含13*8=104条记录
评论