JOIN(内连接):SELECT
*
FROM
TABLE1
T1
INNER
JOIN
TABLE2
T2
ON
T1.ID
=
T2.ID
查询时只有满足了ID的值在俩个表同时存在,才能将此记录查询出来。
FULL
OUTER
JOIN(完全外连接):SELECT
*
FROM
TABLE1
T1
FULL
OUTER
JOIN
TABLE2
T2
ON
T1.ID
=
T2.ID
查询时TABLE1
和
TABLE2满足内连接的记录会统一成一条记录查询出来。
TABLE1中能找到ID值而在TABLE2中找不到对应的值,此时TABLE1中此记录的值不变,其他TABLE2字段的值补NULL,合并成一条记录查询出来。
反之,TABLE2中能找到ID值而在TABLE1中找不到对应的值,此时TABLE2中此记录的值不变,其他TABLE1字段的值补NULL,合并成一条记录查询出来。
举例回答:
表stu
id name
1, Jack
2, Tom
3, Kity
4, nono
表exam
id grade
1, 56
2, 76
11, 89
内连接(显示两表匹配的id)
select stu.id, exam.id, stu.name, exam.grade from stu inner join exam on stu.id = exam.id1 1 Jack 56
2 2 Tom 76
左连接(显示join左边表的所有数据)
select stu.id, exam.id, stu.name, exam.grade from stu left join exam on stu.id = exam.id1 1 Jack 56
2 2 Tom 76
3 NULL Kity NULL
4 NULL nono NULL
右连接(显示join右边表的所有数据)
select stu.id, exam.id, stu.name, exam.grade from stu right join exam on stu.id = exam.id1 1 Jack 56
2 2 Tom 76
NULL 11 NULL 89
总结:
内连接取交集
外连接(左连接,右连接)
左连接左边的全取
右连接右边的全取
INNERJOIN(内连接):SELECT
*
FROM
TABLE1
T1
INNER
JOIN
TABLE2
T2
ON
T1.ID
=
T2.ID
查询时只有满足了ID的值在俩个表同时存在,才能将此记录查询出来。
FULL
OUTER
JOIN(完全外连接):SELECT
*
FROM
TABLE1
T1
FULL
OUTER
JOIN
TABLE2
T2
ON
T1.ID
=
T2.ID
查询时TABLE1
和
TABLE2满足内连接的记录会统一成一条记录查询出来。
TABLE1中能找到ID值而在TABLE2中找不到对应的值,此时TABLE1中此记录的值不变,其他TABLE2字段的值补NULL,合并成一条记录查询出来。
反之,TABLE2中能找到ID值而在TABLE1中找不到对应的值,此时TABLE2中此记录的值不变,其他TABLE1字段的值补NULL,合并成一条记录查询出来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)