日期:2014-05-16  浏览次数:20514 次

数据库内连接、外连接(左连接、右连接、全连接)

内连接:把两个表中数据对应的数据查出来
外连接:以某个表为基础把对应数据查出来(全连接是以多个表为基础)

student表
no name?
1?? a???
2?? b
3?? c
4?? d

grade表
no grade
1??? 90
2??? 98
3??? 95

内连接 inner join(查找条件中对应的数据,no4没有数据不列出来)
语法:select * from student inner join grade on student.no = grade.no
结果
student.no name grade.no grade
1? a 1? 90
2? b 2? 98
3? c 3? 95

左连接(左表中所有数据,右表中对应数据)
语法:select * from student left join grade on student.no = grade.no
结果:
student.no name grade.no grade
1????????????????? a???????? 1??????????????? 90
2????????????????? b???????? 2??????????????? 98
3????????????????? c???????? 3??????????????? 95
4????????????????? d

右连接(右表中所有数据,左表中对应数据)
语法:select * from student right join grade on student.no = grade.no
结果:
student.no name grade.no grade
1????????????????? a????????? 1?????????????? 90
2????????????????? b????????? 2?????????????? 98
3????????????????? c????????? 3??????????????? 95

全连接
语法:select * from student full join grade on student.no = grade.no
结果:
no name grade
1?? a????????? 90
2?? b???????? 98
3?? c???????? 95
4?? d
1?? a???????? 90
2?? b???????? 98
3?? c???????? 95

注:access 中不能直接使用full join ,需要使用union all 将左连接和右连接合并后才可以