版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一、什么是多表查询?
通过一次查询将多个表中所需的信息罗列出来,其类型包括:内连接,外连接,检查连接
二 、内连接
#第一种形式
select ui.*,addr.* from user_info ui,address addr where addr.user_id=ui.id
#第二种形式
select ui.*,addr.*
from user_info ui
inner join address addr on addr.user_id=ui.id
必须输出两个表中id都相同进行拼合(即满足on后面的语句):
三、外连接
1、左外连接与右外连接:
#二、外连接
#左外链接
select ui.*,addr.*
from user_info ui
left join address addr on ui.id = addr.user_id;
#右外链接
select ui.*,addr.*
from user_info ui
right join address addr on ui.id = addr.user_id;
作用:以关键字left(right)为参照物,用其左(右)为主表:此时必须满足on后面的条件的同时并且输出主表中的全部数据(即使该数据不对应从表中的数据)
注:此处仅仅使用左外连接举例
2、全外连接:
该外连接在MySQL数据库中不支持:其作用就是不仅满足on后面的条件,还要将两个表中不匹配的数据输出
四、交叉连接
左表(“cross join”关键字左边的表)中的每一行与右表(“cross join”关键字右边的表)中的所有行组合,交叉联接的结果是一个笛卡尔积。
此时的数据匹配种类过于多样化,一般来讲:该方法的作用对一些需要通过对应ID寻找数据库信息的需求十分渺小;