表和表关联分为几种类型,所以多表的查询也有几种类型。
内连接:inner join
外连接:左外连接 left [outer] join 右外连接 right [outer] join
(1) 内链接:只返回两个表中满足条件的记录信息,即:两个表中其中一个表的某一行不存在,则总的结果就不会显示这一行。
-- 内链接查询
select goods.id, goods.goods_name, brand.brand_name, category.cate_name from goods
inner join brand on goods.brand_id=brand.bid
inner join category on goods.cate_id=category.cid;
另外:类似于内连接的多表查询
语法 select 字段列表 from 表1,表2,表3...... where 连接条件1 and 连接条件2 .......
select id,goods_name,cate_name,brand_name,price from goods as g,brand as b,category as c where g.brand_id=b.bid and g.cate_id=c.cid and price>3000;
(2)左外连接:显示左表goods全部记录及右表brand中符合连接条件的记录。即:若右表band的band.bid不存在的行就查不到,但总的都会显示,右表band只显示符合条件的记录,没查到的用null显示。
-- 左外链接
select goods.id, goods.goods_name, brand.brand_name, brand.cate_name from goods
left join brand on goods.brand_id=brand.bid
left join category on goods.cate_id=category.cid;
(3)右外连接:显示左表goods中符合连接条件的记录及右表brand全部记录。 即若左表goods的goods.bid不存在的行就查不到,但总的都会显示,左表goods只显示符合条件的记录,没查到的用null显示。
-- 右外链接
select goods.id, goods.goods_name, brand.brand_name, brand.cate_name from goods
right join brand on goods.brand_id=brand.bid
right join category on goods.cate_id=category.cid;