MySQL数据库多表连接_笛卡尔积
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多表关联
内联接
外联接
左外联接
右外连接
全外连接
自然联接
内联接
表1 inner join表2 on表1和表2的关联条件
Where和连接性区别?
Where是在from直接取得结果集基础上再使用where条件进行数据过滤(2次)
连接性是在from取数据时直接使用on后连接条件进行数据过滤(1次)
交叉集(笛卡尔积)
From tl
union
Select‘合计’as‘购物种类’,’ ’as ‘分类’,sum(test.price)as ‘购买价格’
from
(
Select‘蔬菜’,sc_fl,sc_jg as price
From sc
Union
Select ‘调料’,tl_fl,tl_jg as price
From tl
假设两个表关联,右表数据全部取出,左表数据只取出和右表数据有关联的数据。
Natural
不用写表连接条件,数据库自动匹配
主外键字段名称必须一致
Union
Union all
使用union把两个查询结果集纵向拼接
蔬菜表
Id
蔬菜分类
购买价格
。。。
1
胡萝卜
10
2
白菜
20
3
生菜
15
调料表
Id
调料分类
购买价格
。。。
数据库笛卡尔积什么含义?原理是什么?
假设两个表关联,获取左表数据和右表数据有关联,右表数据也和左表数据有关联的数据。
左外连接
表1left[outer] outer可省join表2 on表1和表2连接条件
假设两个表关联,左表数据全部取出,右表数据只取出和左表数据有关联的数据。
右外连接
表1right[outer] outer可省join表2 on表1和表2连接条件
1
料酒
23
2
鸡精
13
3
酱油
11
购物种类
分类
购买价格
蔬菜
胡萝卜
10
蔬菜来自百度文库
白菜
20
蔬菜
生菜
15
调料
料酒
23
调料
鸡精
13
调料
酱油
11
合计
以上数值合计数
Select‘蔬菜’as ‘购物种类’,sc_flas ‘分类’,sc_jg as‘购买价格’
From sc
Union
Select ‘调料’as ‘购物种类’,tl_flas ‘分类’,tl_jg as‘购买价格’
) as test
内联接
外联接
左外联接
右外连接
全外连接
自然联接
内联接
表1 inner join表2 on表1和表2的关联条件
Where和连接性区别?
Where是在from直接取得结果集基础上再使用where条件进行数据过滤(2次)
连接性是在from取数据时直接使用on后连接条件进行数据过滤(1次)
交叉集(笛卡尔积)
From tl
union
Select‘合计’as‘购物种类’,’ ’as ‘分类’,sum(test.price)as ‘购买价格’
from
(
Select‘蔬菜’,sc_fl,sc_jg as price
From sc
Union
Select ‘调料’,tl_fl,tl_jg as price
From tl
假设两个表关联,右表数据全部取出,左表数据只取出和右表数据有关联的数据。
Natural
不用写表连接条件,数据库自动匹配
主外键字段名称必须一致
Union
Union all
使用union把两个查询结果集纵向拼接
蔬菜表
Id
蔬菜分类
购买价格
。。。
1
胡萝卜
10
2
白菜
20
3
生菜
15
调料表
Id
调料分类
购买价格
。。。
数据库笛卡尔积什么含义?原理是什么?
假设两个表关联,获取左表数据和右表数据有关联,右表数据也和左表数据有关联的数据。
左外连接
表1left[outer] outer可省join表2 on表1和表2连接条件
假设两个表关联,左表数据全部取出,右表数据只取出和左表数据有关联的数据。
右外连接
表1right[outer] outer可省join表2 on表1和表2连接条件
1
料酒
23
2
鸡精
13
3
酱油
11
购物种类
分类
购买价格
蔬菜
胡萝卜
10
蔬菜来自百度文库
白菜
20
蔬菜
生菜
15
调料
料酒
23
调料
鸡精
13
调料
酱油
11
合计
以上数值合计数
Select‘蔬菜’as ‘购物种类’,sc_flas ‘分类’,sc_jg as‘购买价格’
From sc
Union
Select ‘调料’as ‘购物种类’,tl_flas ‘分类’,tl_jg as‘购买价格’
) as test