多表联合查询及子查询交叉查询

子查询
子查询就是查询中还有查询,就是一条select语句结果作为另外一条select语法的一部分(查询结果,查询条件,表等)
使用IN进行子查询
使用in进行子查询,这个我们在日常写sql的时候是经常遇到的。in的意思就是指定的一个值是否在这个集合中,如何在就返回TRUE;否则就返回FALSE了。
in是“=any”的别名,在使用“=any”的地方,我们都可以使用“in”来进行替换。

内连接查询,可以有效的去除笛卡尔集现象
分为两类:
隐式内连接 select * from A,B where 条件隐式连接使用别名:select * from A 别名1,B 别名2 where 别名1.xx=别名2.xx;显示内连接 select * from A inner join B on 条件 (inner可以省略)显示连接使用别名: select * from A 别名1 inner join B 别名2 on 别名1.xx=别名2.xx


外连接
外连接有两种方式,一种是左外连接,一种是右外连接
左外连接:select * from A left outer join B on条件右外连接:select * from A right out join B on 条件左外连接就是左边的表的内容全部显示,然后匹配右边的表,如果右边的表匹配不到,则空右外连接就是右边的表的内容全部显示,然后匹配左边的表,如果左边的表匹配不到,则空
左外连接*(以左表为主表)
SELECT * FROM product_type LEFT JOIN product ON product.`protype_id`=product_type.`protype_id`;
右外连接*(以右表为主表)
SELECT * FROM product_type RIGHT JOIN product ON product.`protype_id`=product_type.`protype_id`;


交叉连接查询
交叉查询方式得到的是两个表的乘积(笛卡儿集)
语法:select * from a,b;

猜你喜欢

转载自www.cnblogs.com/wjwap/p/10296113.html