赞
踩
对于两张表,外连接和内连接的区别在于:
内连接:只显示两表id匹配的
左外连接:显示join左边的表的所有数据(不管两表是否匹配),对于不匹配的部分都用NULL显示
右外连接:与左外连接相反,显示join右边的表的所有数据
我们直接用题来解释。
假设有两个表stu和exam,该表结构如上,我们要显示所有学生的成绩,那么内连接和外连接的方式分别为(插入数据请自己补全):
- create table stu(
- Id int,
- Name varchar(40))
- create table exam(
- Id int,
- Grade int)
-
- insert into exam values(11,89)
-
- select * from stu
- select * from exam
-
- --【显示所有学生的成绩】
- --内连接(只显示两表id匹配的)
- select stu.id,exam.id,stu.name,exam.grade from stu inner join exam on stu.id=exam.id
- --左外连接(显示join左边的表的所有数据,exam只有两条记录,所以stu.id,grade都用NULL显示)
- select stu.id,exam.id,stu.name,exam.grade from stu left join exam on stu.id=exam.id
- --右外连接(与左外连接相反,显示join右边的表的所有数据)
- select stu.id,exam.id,stu.name,exam.grade from stu right join exam on stu.id=exam.id
对于插入完的数据查询结果应该是这样的:
1.如果用内连接显示所有学生的成绩, 那么他会只显示两表id匹配的
2.对于左外查询,他会显示join左边的表的所有数据,exam只有两条记录,所以stu.id,grade都用NULL显示
3.右连接与左连接相反,显示join右边的表的所有数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。