select a.*,b.* froma left [outer] join b on 连接条件;
```
- 意思:先展示join左边的(a)表的所有数据,根据条件关联查询 join右边的表(b),符合条件则展示出来,不符合以null值展示.
###### 右外连接:
```txt
select a.*,b.* from b right [outer] join aon 连接条件;
<div class="se-preview-section-delimiter"></div>
查询所有用户的订单详情
左外连接: user在左
select user.*,orders.* from user left join orders on user.id=orders.user_id;
查询所有订单的用户详情
右外连接:orders 在右
select orders.*,user.* from user right join orders on user.id=orders.user_id;
<divclass="se-preview-section-delimiter"></div>
子查询:★
一个查询依赖另一个查询.
练习:
查询订单价格大于300的订单信息及相关用户的信息。
查看用户为张三的订单详情
1.先查询张三的id
select id from User where username = '张三';// 32.select * from orders where user_id = ?;
两个合二为一
select * from orders where user_id = (select id from User where username = '张三');
查询出订单的价格大于300的所有用户信息。
1.先查询出订单价格>300的用户的id
select user_id from orders where price >300;//(3,3,5,null)2.select * from user where id in(3,3,5,null);
两个合二为一:
select * from user where id in(select user_id from orders where price >300);
内连接:
select orders.*,user.* from orders,user where user.id=orders.user_id and orders.price>300 ;
子查询: 是将一个查询的结果作为一张临时表
select user.*,tmp.* from user,(select * from orders where price>300) as tmp where user.id=tmp.user_id;