联表查询的关键字为 join...on...,常见的join类型为以下几种
inner join
从多个表中返回满足join条件的所有行。如果表中有至少一个匹配,则返回行。
语法:select column_names from t1 inner join t2 on t1.column_name = t2.column_name;
left join
即使右表中没有匹配,也从左表返回所有的行。
right join
即使左表中没有匹配,也从右表返回所有的行。
full join
只要其中一个表存在匹配,则返回行。
联表查询在数据库中如何执行呢?
1、执行笛卡尔积(交叉联接)
当我们在进行SQL联表时,实际上时在数据库中生成了一张笛卡尔积的虚表T1,T1里面的数量正是关联的两张表数量的乘积条。
2、执行过滤筛选
当join将两个表生成笛卡尔积的虚表T1后,随后的ON开始执行筛选功能,ON后面的条件就是指符合条件的返回结果true,否则false,及未知unknown(null,null代表缺失值,当把一个缺失值跟其他任意值比较,结果始终为unknown)。
3、添加外部行
这一步只在外连接(out join)中才会发生,对于外联接,通过为其指定一种联接方式(left、right、full),就把一个或两个输入表标记为保留表,即希望返回该表的所有行,即使on过滤了一些行。
左连接(left join)就是把左边的表作为保留表,右连接(right join)就是把右边的表作为保留表,全连接(full join)就是把两个表都作为保留表。
总结以上