数据库的左连接,右连接问题

前一阶段经历了几次程序员的面试,发现数据库这个部分占了很大的比重。而左连接,右连接又是很多人问的重点,当初我就是不太明白怎么一回事,所以吃了几次的亏。今天把专门作了一次关于左连接和右连接的文章,巩固一下知识:
要点:left join,right join,inner join
首先有如下两个表:
Student:
 ID(int)  Name(nvarchar)
 1  a
 2  b
 3  c
 4  d
 5
 e
 6  f
Quiz:
 ID(int)  score(int)
 1  60
 2  70
 4  80
 6  90
 8  100
 9  30
内连接:(inner join)包括连接表的匹配行
select Student.Name,Quiz.score from Quiz inner join Student on Student.ID=Quiz.ID
 Name  score
 a  60
 b  70
 d  80
 f  90
左连接:(left join)包括连接表匹配行以及左连接表的所有行
select Student.Name,Quiz.score from Student left join Quiz on Student.ID=Quiz.ID
 Name  score
 a  60
 b  70
 c  null
 d  80
 e  null
 f  90
右连接:(right join)结果包括连接表的匹配行以及右连接表的所有行
select Student.Name,Quiz.score from Student right join Quiz on Student.ID=Quiz.ID
 Name  score
 a  60
 b  70
 d  80
 f  90
 null  100
 null  30
当然,也可以看出左连接也可以写成右连接的形式:
select Student.Name,Quiz.score from Student right join Quiz on Student.ID=Quiz.ID等价于
select Student.Name,Quiz.score from Quiz left join Student on Student.ID=Quiz.ID

posted @ 2007-11-06 21:53  范文轩  阅读(2637)  评论(3编辑  收藏  举报