一、内连接(INNER JOIN)
1、等值连接
概述:指使用等号"="比较两个表的连接列的值,相当于两表执行笛卡尔后,取两表连结列值相等的记录。
语法:
SELECT 列 FROM 表1 INNER JOIN 表2 ON 表1.列 = 表2.列
示例:
SELECT A.*, B.* FROM student_info A inner join student_score B ON A.student_id = B.student_id
2、非等值连接
概述:指使用大于号">"或小于号"<"比较两个表的连接列的值,相当于两表执行笛卡尔后,取一个表大于或小于另一个表的连结列值的记录。
语法:
SELECT 列 FROM 表1 INNER JOIN 表2 ON 表1.列 <> 表2.列
示例:
SELECT A.*, B.* FROM student_info A inner join student_score B ON A.student_id > B.student_id
结果:
二、外联结
1、左外连接(LEFT OUTER JOIN)
概述:指将左表的所有记录与右表符合条件的记录,返回的结果除内连接的结果,还有左表不符合条件的记录,并在右表相应列中填NULL。
示例:
SELECT A.*, B.* FROM student_info A left join student_score B ON A.student_id = B.student_id
结果:
3、全外连接(FULL JOIN)——MySQL不支持
概述:指将左表所有记录与右表所有记录进行连接,返回的结果除内连接的结果,还有左表与右表不符合条件的记录,并在左表与右表相应列中填NULL。
三、自然连接(NATURAL JOIN)
概述:指自动将表中相同名称的列进行记录匹配。
示例:
SELECT A.*, B.* FROM student_info A natural join student_score B
结果:
四、自连接
概述:指用表的别名实现表自身的连接。
示例:
SELECT B.* FROM student_score A, student_score B WHERE A.student_id = B.student_id AND B.student_score > 80
结果:
最后附上一张图,此图在手,天下我有