关于 sql 关联查询的 新理解

1.首先,关联查询,一定先是 笛卡尔积,先必有笛卡尔积,形成新的临时表
2.sql 无时不刻 在形成 临时表
3.ok,笛卡尔积 临时表出现了,那么后面该怎么办
4.首先必须得有关联条件,根据关联条件,来确定从笛卡尔积临时表中,筛选出,符合条件的两表相交记录,关联查询其实到这就可以结束了
5.但是,到这,sql,提供了对那些 不相交,不符合条件的记录的管理,这就是我们下面要说的连接方式

内连接,外连接(左,右,全)

外连接必须有 on 关联条件

	1.内连接
		sql原本的 关联条件后剩下的记录,这种其实就是 内连接,只要符合关联条件的记录
		
	2.外连接
		1.外连接这种方式其实就是对,不符合条件的记录的管理,因为有时我们需要这些不符合条件的记录
		所以sql提供给了 我们这种方式,去 “留下” 这些不符合条件的记录

	对于外连接(以左外为例)
		首先笛卡尔积临时表,留下符合关联条件的记录
		然后,会将原始左表中(不是笛卡尔积临时表的左表)有 关联条件符合的记录 全部去除
		剩下的(相同记录,重复的也算) 全部留下,并且给右表填充 null

	例子 左表 (1,a)(1,a) (2,b)
		 右表 (2,a) (2,b)
		 这样左连接后(用 id 左 关联条件)
		 	1.生成 笛卡尔积 临时表 6条记录
		 	2.(2,b,2,a)(2,b,2,b) 这两条记录留下,符合 关联条件
		 	3.来到左表 去除 关联条件符合的记录 那么去除(2,b)
		 	4.这样b表还剩下(1,b)(1,b)这两条记录,右表填null
		 	5.这样最后形成的 临时表就剩下4条记录
		 		(2,b,2,a)(2,b,2,b) 
		 		(1,b,null,null)(1,b,null,null)

	全外连接(mysql不提供)但是可以用 union关键字
	将 左外 和 右外 拼起来,达到 全外的效果

关于主表和从表(表关系)

	1.首先,想要用关联查询,那么表之间必须得有关系,即主表,从表
	2.从表必须得,依赖主表才有作用,单独从表没有意义
	3.但是从表的使用,不一定要用关联查询,可以直接用 从表的 外键作为条件完成一些查询
	4.一张从表,可能有多个主表,即依赖多张主表生存
	
	单独一张独立的表也是可以有层级关系的,例如一级分类,二级分类
	
	表和表之间,涉及主表,从表时(有3种情况)
		1.1对1
		2.1对多
		(从表 有外键即可)此时从表的记录不会因 外键而 重复
		
		3.多对多(多对多必须用第三张表 存  主表和从表的 关联字段的 对应关系)
			因为如果不用第三张表的话,从表的记录就会大量重复
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值