MySQL数据库中的多表查询(内连接,外连接)
部分图和文字来源于https://www.cnblogs.com/qingmuchuanqi48/p/11130037.html
利用两张表(teacher表和student表),定义teacher表的别名为a,student表的别名为b,关联字段a.id和b.tid来演示一下MySQL的内连接、外连接(左外连接、右外连接)。
一、内连接
内连接查询(使用关键字inner join,inner可以省略)
隐式内连接:select * from A,B where 条件;
显示内连接:select * from A inner join B on 条件;
执行语句为:select * from teacher a inner join student b on a.id = b.tid;
等价于:
查询结果:
总结:当且仅当两个表中的数据都符合on后面的条件的时候才会被select出来。
二、左外连接
外连接查询(使用关键字outer join,outer可以省略)
左外连接:left outer join
语句:select * from teacher a left join student b on a.id = b.tid
查询结果:
总结:在查询的时候,以left join这个关键字左边的表为主表,会将这个表中的数据全部查询出来,如果右表中没有对应的数据,则用NULL字段表示。
三、右外连接
右外连接:right outer join
select * from teacher a right join student b on a.id = b.tid
总结:右外连接与左外连接相反,以右边的表为主表。上述例子没法看出效果,是因为student表中的tid设置成了teacher中id的外键,有了外键约束,无法添加teacher.id不包含的值。