表连接JOIN

内连接

内连接:用比较运算符比较要连接的列的值,JOININNER JOIN

eg: select * from t1 join t2 on t1.id = t2.id;

外连接

外连接包括:LEFT JOINRIGHT JOINFULL JOIN

LEFT JOIN

左连接:LEFT JOINLEFT OUTER JOIN,包括指定的左表的所有行,如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所选列为空值。

eg: select * from t1 left join t2 on t1.id = t2.id;

RIGHT JOIN

右连接:RIGHT JOINRIGHT OUTER JOIN,包括指定的右表的所有行,如果右表的某行中没有匹配行,则在相关联的结果集行中左表的所选列为空值。

eg: select * from t1 right join t2 on t1.id = t2.id;

FULL JOIN

全连接:FULL JOINFULL OUTER JOIN,返回左表和右表中的所有行,当某行在另一个表中没有匹配行时,则另一个表的所选列为空值。

eg: select * from t1 full join t2 on t1.id = t2.id;

交叉连接

交叉连接:CROSS JOIN,没有WHERE子句的交叉连接将产生连接所涉及的表的笛卡尔积。(结果集大小为两表的行数之积)

eg: select * from t1 cross join t2;等价于select * from t1,t2;