MySQL 多表查询
-- 交叉连接
SELECT * FROM 表一 JOIN 表二;
-- 内连接
SELECT * FROM 表一 JOIN 表二 ON 表一.字段1=表二.字段2;
-- 左外连接 特点:在内连接的基础上把join左边的表中不满足条件的数据也查出来放在结果集中,右表中的字段自动补null
SELECT * FROM 表一 LEFT JOIN 表二 ON 表一.字段1=表二.字段2;
-- 右外连接
SELECT * FROM 表一 RIGHT JOIN 表二 ON 表一.字段1=表二.字段2;
练习
-- 找到索尼手机4G手机所属类别名称 SELECT protype_name FROM product JOIN product_type ON product.protype=product_type.protype_id WHERE pro_name LIKE '%索尼%' AND pro_name LIKE '%4G手机%'; -- 找出所有属于手机数码的产品 SELECT * FROM product JOIN product_type ON product.protype=product_type.protype_id WHERE protype_name='手机数码';
子查询
-- 子查询:找出所有属于手机数码的产品 -- 特点:子查询就是把一个查询的结果当作另一个查询的条件 SELECT * FROM product WHERE protype=(SELECT protype_id FROM product_type WHERE protype_name='手机数码'); -- 子查询 找出索尼4G手机所属类别名称 SELECT protype_name FROM product_type WHERE protype_id=(SELECT protype FROM product WHERE pro_name LIKE '%索尼%4G手机%'); -- in子查询 SELECT protype_name FROM product_type WHERE protype_id IN(值1,值2,值3)