mysql学习--两表的全连接

一、表与集合的关系:一张表就是一个集合,每一行就是一个元素

两表全相乘:
从行的角度来看,就是两表中的每一行,两两组合
从列的角度来看,结果集中的列,是两表的列名的相加

二、两表相乘的简单例子
在这里插入图片描述
在这里插入图片描述

select * from t10,t11;

在这里插入图片描述
三、利用两表相乘,根据cat_id查询每个商品的cat_name

1、建一张小的商品表

create table minigoods like goods;

2、把goods表的前三个商品插入到minigoods中

insert into minigoods select * from goods limit 3;

在这里插入图片描述
3、minigoods表和category表做全相乘

select * from minigoods,category;

做全相乘时,有针对的取几列’

select goods_name,minigoods.cat_id,cat_name,category.cat_id from minigoods,category;

在这里插入图片描述注意:多表联查时,某一列名在2张或者2张以上的表都有,则需在列名前,指定表名

4、根据cat_id查询minigoods表中商品的cat_name

方法一:全相乘

select goods_name,minigoods.cat_id,cat_name,category.cat_id from minigoods,category where minigoods.cat_id=category.cat_id;

在这里插入图片描述
方法二:左连接

select goods_name,minigoods.cat_id,cat_name,category.cat_id from (minigoods left join  category on minigoods.cat_id=category.cat_id);

在这里插入图片描述
注意:左连接用上了索引,比全相乘效率高。全相乘是两张表相乘 形成一张新表,然后再去筛选

5、取第四个栏目下商品的name,cat_id,cat_name

select goods_name,goods.cat_id,cat_name from (goods left join category on goods.cat_id=category.cat_id) where goods.cat_id=4;

在这里插入图片描述

发布了20 篇原创文章 · 获赞 0 · 访问量 225

猜你喜欢

转载自blog.csdn.net/alyssa_yu/article/details/104802007