外观
连接查询
连接是把不同的表的记录连接到一起,MySQL从一开始就很好地支持连接操作。
内连接查询
内连接是普遍的连接类型,而且是最匀称的,它们要求构成连接的每个表的共有列匹配,不匹配的行将被删除。
select book_list.bookid,book_list.bookname,book_list.author,book_borrow.borrowtime,book_borrow.borrower from book_list,book_borrow where id=bookid;上面代码中,设置了若book_list中的书的“bookid”和book_borrow中借书的“id”相等才连接。

外连接查询
外连接就是使用OUT JOIN关键字连接两个表。选取一个主表,然后在选取一个副表,将主表和副表连接起来。语法如下:
SELECT 字段名称 FROM 表名1 LEFT|RIGHT JOIN 表名2 ON 表名1.字段名1=表名2.属性名2;- 使用左外连接:
左外连接是将左表中所有数据分别都与右表中每条数据相连接组合,返回的结果除了左连接的数据以外,还包括左表中不符合条件的数据,并在右表中不符合条件的位置添加NULL。
select book_list.bookid,book_list.bookname,book_list.author,book_borrow.borrowtime,book_borrow.borrower from book_borrow left join book_list on bookid=id;
针对这里的图书信息表和借阅表,内连接和左外连接得到的结果一样。这是因为左表(借阅表)中的数据在右表 你 (图书信息表)中一定有之相对应的数据。如果将图书信息表作为左表,借阅表作为右表,就会得到如下图的数据。

- 使用右外连接
右外连接是指将右表中的所有数据分别与左表中的每条数据进行连接组合,返回的结果除内连接的数据以外,还包括右表中不符合条件的数据,并在左表的相应列中添加NULL。
select book_list.bookid,book_list.bookname,book_list.author,book_borrow.borrowtime,
book_borrow.borrower from book_borrow right join book_list on bookid=id;
- 外连接的列顺序还是根据select后面的字段顺序保持一致,也就是说左外连接和右外连接不会改变字段的顺序。
- 若为左连接,那么左表是LEFT JOIN左边的表,也是主表,若为右连接,那么右表是RIGHT JOIN右边的表,也是主表。
复合条件连接查询
在连接查询时,也可以添加其他的查询条件,使查找结果更加准确。
select book_list.bookid,book_list.bookname,book_list.author,book_borrow.borrowtime,book_borrow.borrower from book_list,book_borrow where id=bookid and isback=0;