先来看一道面试题:
根据表A,表B写出以下SQL的查询结果集
1:SELECT * FROM A LEFT JOIN B ON A.aID = b.bID;2:SELECT * FROM A RIGHT JOIN B ON A.aID = b.bID;3:SELECT * FROM A INNER JOIN B ON A.aID = b.bID;
要想写出正确的结果,首先我们要知道LEFT JOIN 、RIGHT JOIN、INNER JOIN的语法:LEFT JOIN:左连接,会读取左表全部数据,即便右表没有对应数据。左连接从左表产生一套完整的记录,和右表匹配的记录 .如果右边没有匹配记录,右侧结果集字段将为null。结果集图示如下:
RIGHT JOIN: 右连接,以右表为基础,与LEFT JOIN相反。结果集图示如下:
INNER JOIN :内连接,或等值连接,可以获取两个表中字段匹配关系的记录。结果集图示如下:
掌握了以上的语法,不难得到上面题目的查询结果。为了更方便大家理解,我们改造题目如下:
非常勿扰节目来了6位女嘉宾和6位男嘉宾,他们的信息和配对情况分别保存在grils表和boys表中。其中id分别是两个表的主键,boyNum、girlNum分别男女嘉宾的编号,matchNum是男女嘉宾的配对编号,如果男生和女生的配对编号相对,则表示配对成功,表数据如下所示:</