内连接:是一种比较常用的链接查询方式,列出这些基表中与连接条件相匹配的所有数据行。
语法是:
Select select_list
From table1inner join table2
Where search_conditions
Order byorder_expression
给定连个表:一个student 表 一个是grade表
student表
Number |
Name |
1 |
张一 |
2 |
张二 |
3 |
张三 |
4 |
张四 |
grade表
Number |
Grade |
1 |
90 |
2 |
98 |
3 |
95 |
4 |
|
内连接 inner join(查找条件中对应的数据,Number4没有数据不列出来)
语法:select * from student inner join grade on student.Number= grade.Number
结果
student.Number |
Name |
grade |
1 |
张一 |
90 |
2 |
张二 |
98 |
3 |
张三 |
95 |
外连接:以某个表为基础把对应数据查出来(全连接是以多个表为基础) 。在使用外连接的时候,所用的基表有主从表之分,连接时是以主表中美行的数据去匹配从表中的数据行。如果符合连接条件则返回到结果中,如果没有匹配行,则主表的行仍然保留,并且返回到结果集中,相应的从表中的数据行则被填上null 值返回到结果集中。
根据匹配行与不匹配行的主从表形式不同,外链接分为三种类型:左外连接右外连接 全外连接
左连接(左表中所有数据,右表中对应数据)
语法:select * from student left join grade on student.Number= grade.Number
结果:
student.Number |
Name |
grade |
1 |
张一 |
90 |
2 |
张二 |
98 |
3 |
张三 |
95 |
4 |
张四 |
Null |
右连接(右表中所有数据,左表中对应数据)
语法:select * from student right join grade on student.Number= grade.Number
结果:
student.Number |
Name |
grade |
1 |
张一 |
90 |
2 |
张二 |
98 |
3 |
张三 |
95 |
|
|
|
全连接
语法:select * from student full join grade on student.Number= grade.Number
结果:
student.Number |
Name |
grade |
1 |
张一 |
90 |
2 |
张二 |
98 |
3 |
张三 |
95 |
4 |
张四 |
Null |
1 |
张一 |
90 |
2 |
张二 |
98 |
3 |
张三 |
95 |