内连接
内连接:用比较运算符比较要连接的列的值,JOIN
或INNER JOIN
。
eg: select * from t1 join t2 on t1.id = t2.id;
外连接
外连接包括:LEFT JOIN
、RIGHT JOIN
或FULL JOIN
。
LEFT JOIN
左连接:LEFT JOIN
或LEFT OUTER JOIN
,包括指定的左表的所有行,如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所选列为空值。
eg: select * from t1 left join t2 on t1.id = t2.id;
RIGHT JOIN
右连接:RIGHT JOIN
或RIGHT OUTER JOIN
,包括指定的右表的所有行,如果右表的某行中没有匹配行,则在相关联的结果集行中左表的所选列为空值。
eg: select * from t1 right join t2 on t1.id = t2.id;
FULL JOIN
全连接:FULL JOIN
或FULL 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;