--连接语法结构
table_reference {[INNER|CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN} table_reference ON conditional_expr;
/*
ps.在MySQL中,JOIN,CROSS JOIN和INNER JOIN是等价的
LEFT [OUTER] JOIN,左外连接
RIGHT [OUTER] JOIN,右外连接
ON关键字后面设定连接条件,也可以使用WHERE来替代
(通常使用ON关键字来设定连接条件,使用WHERE关键字来进行结果集记录的过滤)
*/--数据表参照
table_reference tb_name [[AS] alias] | table_subquery [AS] alias;
--数据库可以使用tb_name AS alias_name--或者tb_name alias_name 赋予别名--table_subquery 可以作为子查询使用在FROM子句中,这样的子查询必须为其赋予别名
--内连接,显示左表及右表符合连接条件的记录--示例操作(假设前提条件已满足)SELECT book_id,book_name,cate_name FROM tb_book INNERJOIN tb_book_cates ON tb_book.cate_id = tb_book_cates.cate_id;
--外连接/*
A LEFT JOIN B join_condition(拿左外连接作说明)
数据表B的结果集依赖数据表A
数据表A的结果集根据左连接条件依赖所有数据表(B表除外)
左外连接条件决定如何检索数据表B(在没有指定WHERE条件的情况下)
如果数据表A的某条记录符合WHERE条件,但是在数据表B不存在符合连接条件的记录,将生成一个所有列为空的额外的B行
*/--左外连接,显示左表的全部记录及右表符合连接条件的记录--示例操作(假设前提条件已满足)SELECT book_id,book_name,cate_name FROM tb_book LEFTJOIN tb_book_cates ON tb_book.cate_id = tb_book_cates.cate_id;--右外连接,显示右表的全部记录及左表符合连接条件的记录--示例操作(假设前提条件已满足)SELECT book_id,book_name,cate_name FROM tb_book RIGHTJOIN tb_book_cates ON tb_book.cate_id = tb_book_cates.cate_id;
--多表连接(两张表以上)--示例操作(假设前提条件已满足)SELECT stu_id,stu_name,stu_sex,stu_cid,stu_pid FROM tb_stu AS s
INNERJOIN tb_stu_class AS c ON s.stu_cid = c.class_id
INNERJOIN tb_stu_province AS p ON s.stu_pid = p.pro_id;