一、表与集合的关系:一张表就是一个集合,每一行就是一个元素
两表全相乘:
从行的角度来看,就是两表中的每一行,两两组合
从列的角度来看,结果集中的列,是两表的列名的相加
二、两表相乘的简单例子
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;