zl程序教程

您现在的位置是:首页 >  其它

当前栏目

SQLServer2005中的外联结用法

用法 sqlserver2005 联结
2023-06-13 09:15:41 时间

SQLServer2005中的外联结用法一:

有两个表:学生表,学生选课表,表中数据为:

学生表:

学生选课表:

要查看所有学生的选课信息,

标准的SQL语句,外联结语句为

usestu_course
selectL.sno,sname,ssex,sage,sdept,cno,grade
fromstudentL,sc
whereL.sno=sc.sno(*)

理论上的结果为:

但是,在SQLServer2005中运行会出现错误,错误提示为:

消息102,级别15,状态1,第4行
"*"附近有语法错误。 

在SQLServer2005中,相应的T-SQL语句应该为:

usestu_course
selectL.sno,sname,ssex,sage,sdept,cno,grade
fromstudentLleftjoinsc
onL.sno=sc.sno

运行结果为:

同时,还可以在on后面再加上where限定条件:

usestu_course
selectL.sno,sname,ssex,sage,sdept,cno,grade
fromstudentLleftjoinsc
onL.sno=sc.sno
whereL.snoin(95001,95002,95003,95004)

这时,运行结果为:

 

以上这个例子是左外联结查询,即:结果表中包含第一个表中所有满足条件的

记录,如果在第二个表中有满足联结条件的记录,则返回相应的值,否则返回NULL

SQLServer2005中的外联结查询用法(续):

有三个表:学生表,学生选课表,课程表,表中数据为:

学生表:

学生选课表:

课程表:

 左联结查询举例:

usestu_course
selectL.sno,sname,ssex,sage,sdept,cno,grade
fromstudentLleftjoinsc
onL.sno=sc.sno

结果为:

右联结查询举例:

usestu_course
selectsno,course.cno,course.cname
fromscrightjoincourse
onsc.cno=course.cno

结果为:

全外联结查询举例:

usestu_course
selectsno,course.cno,course.cname
fromscfulljoincourse
onsc.cno=course.cno

结果为:

如果将这个全外联中的左右两个表交换顺序:

usestu_course
selectsno,course.cno,course.cname
fromcoursefulljoinsc
onsc.cno=course.cno

结果仍为:

由以上例子可以看出:

      对于左外联结,结果表中包含第一个表中所有满足条件的记录,如果在第二个表中有满足联结条件的记录,则返回相应的值,否则返回NULL; 

      对于右外联结,结果表中包含第二个表中所有满足条件的记录,如果在第一个表中有满足联结条件的记录,则返回相应的值,否则返回NULL; 

      对于全外联结,结果表中包含两个表中所有满足条件的记录,如果在其中一个表中有满足联结条件的记录,则返回相应的值,否则返回NULL;