【cl】多表查询(内、外连接)
交叉连接(cross join):该连接产生的结果集笛卡尔积
a有7行,b有8行 a的第一行与b的每一行进行连接,就有8条a得第一行
7*8=56条
select a.real_name,s.unix_host,s.os_username
from account a cross join service s;(56条)
select a.real_name,s.unix_host,s.os_username
from account a cross join service s
where a.id = s.account_id;
内连接 (join 或者inner join)
ps:ijoin 是inner join的简写,是同个意思
select a.real_name,s.unix_host,s.os_username
from account a join service s on a.id = s.account_id;
驱动表:在生成结果集的时候从这张表出发 左边是驱动表
匹配表:
外连接分为左连接(left join 或 left outer join)、右连接(right join 或者 right outer join)、和完整外部连接(full join 或者 full outer join)
left join 左边的表不加限制
(左边有7条记录,其中有4条与右边的有匹配共8条,找不到匹配的就显示一条整条右边是空的(共3条),找到的就匹配)共11条
right join 右边的表不加限制
(右边有8条记录,8条与左边7个的都有1个匹配,总的8条