MySQL(12)-----多表查询(内连接和外连接)

 

分析:

笛卡尔积:多张表无条件的联合查询(无任何意义)

                  如:select a.*,b.* from a,b;

MySQL(12)-----多表查询(内连接和外连接)_第1张图片

内连接:使用inner join关键字,inner 可以省略。

           格式1:显式的内连接

select a.*, b.* from a[inner] join b on ab的连接条件;

           格式2:隐式的内连接

select a.*, b.* from a, b where ab的连接条件;

测试:查询用户的订单,没有订单的用户不显示

           隐式内连接:select user.*, orders.* from user, orders where user.id = orders.user_id;

MySQL(12)-----多表查询(内连接和外连接)_第2张图片

          显式的内连接:select user.*, orders.* from user join orders on user.id = orders.user_id;

MySQL(12)-----多表查询(内连接和外连接)_第3张图片

外连接:使用outer join关键字,outer 可以省略。

           格式1:左外连接left outer join

select a.*, b.* from a left [outer] join b on ab的连接条件;(先展示join左边的表【a表】的所有数据,根据条件关联查询join右边的表【b表】,符合条件则展示出来,反之以null值显示)

           格式2:右外连接right outer join

select a.*, b.* from a right [outer] join b on ab的连接条件;(先展示join右边的表【b表】的所有数据,根据条件关联查询join左边的表【a表】,符合条件则展示出来,反之以null值显示)

测试:查询所有用户的订单详情

           左外连接:select user.*, orders.* from user left join orders on user.id = orders.user_id;

MySQL(12)-----多表查询(内连接和外连接)_第4张图片

           右外连接:select user.*, orders.* from user right join orders on user.id = orders.user_id;

MySQL(12)-----多表查询(内连接和外连接)_第5张图片

查询所有订单的用户详情:

           左外连接:select orders.*,user.* from orders left join user on orders.user_id = user.id;

MySQL(12)-----多表查询(内连接和外连接)_第6张图片

           右外连接:select orders.*,user.* from orders right join user on orders.user_id = user.id;

MySQL(12)-----多表查询(内连接和外连接)_第7张图片


人的一生中,最光辉的一天并非是功成名就那天,而是从悲叹与绝望中产生对人生的挑战,以勇敢迈向意志那天。愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

你可能感兴趣的:(MySQL)