源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

SQL Server 2005中的外联结用法

  • 时间:2020-12-21 23:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:SQL Server 2005中的外联结用法
SQL Server 2005中的外联结用法一: 有两个表:学生表,学生选课表,表中数据为: 学生表: [img]http://files.jb51.net/file_images/article/201408/2014081100351530.jpg[/img] 学生选课表: [img]http://files.jb51.net/file_images/article/201408/2014081100351531.jpg[/img] 要查看所有学生的选课信息, 标准的SQL语句,外联结语句为
use stu_course
select L.sno,sname,ssex,sage,sdept,cno,grade
from student L,sc
where L.sno=sc.sno(*)
理论上的结果为: [img]http://files.jb51.net/file_images/article/201408/2014081100351532.jpg[/img] 但是,在SQLServer2005中运行会出现错误,错误提示为: 消息 102,级别 15,状态 1,第 4 行 '*' 附近有语法错误。  在SQLServer2005中,相应的T-SQL语句应该为:
use stu_course
select L.sno,sname,ssex,sage,sdept,cno,grade
from student L left join sc
on L.sno=sc.sno
运行结果为: [img]http://files.jb51.net/file_images/article/201408/2014081100351533.jpg[/img] 同时,还可以在on后面再加上where限定条件:
use stu_course
select L.sno,sname,ssex,sage,sdept,cno,grade
from student L left join sc
on L.sno=sc.sno
where L.sno in(95001,95002,95003,95004)

这时,运行结果为: [img]http://files.jb51.net/file_images/article/201408/2014081100351534.jpg[/img]   以上这个例子是左外联结查询,即:结果表中包含第一个表中所有满足条件的 记录,如果在第二个表中有满足联结条件的记录,则返回相应的值,否则返回NULL SQLServer2005中的外联结查询用法(续): 有三个表:学生表,学生选课表,课程表,表中数据为: 学生表: [img]http://files.jb51.net/file_images/article/201408/2014081100422035.jpg[/img] 学生选课表: [img]http://files.jb51.net/file_images/article/201408/2014081100422036.jpg[/img] 课程表: [img]http://files.jb51.net/file_images/article/201408/2014081100422037.jpg[/img]  左联结查询举例:
use stu_course
select L.sno,sname,ssex,sage,sdept,cno,grade
from student L left join sc
on L.sno=sc.sno

结果为: [img]http://files.jb51.net/file_images/article/201408/2014081100422038.jpg[/img] 右联结查询举例:
use stu_course
select sno,course.cno,course.cname
from sc right join course
on sc.cno=course.cno

结果为: [img]http://files.jb51.net/file_images/article/201408/2014081100422039.jpg[/img] 全外联结查询举例:
use stu_course
select sno,course.cno,course.cname
from sc full join course
on sc.cno=course.cno

结果为: [img]http://files.jb51.net/file_images/article/201408/2014081100422039.jpg[/img] 如果将这个全外联中的左右两个表交换顺序:
use stu_course
select sno,course.cno,course.cname
from course full join sc
on sc.cno=course.cno

结果仍为: [img]http://files.jb51.net/file_images/article/201408/2014081100422039.jpg[/img] 由以上例子可以看出:        对于左外联结,结果表中包含第一个表中所有满足条件的记录,如果在第二个表中有满足联结条件的记录,则返回相应的值,否则返回NULL;         对于右外联结,结果表中包含第二个表中所有满足条件的记录,如果在第一个表中有满足联结条件的记录,则返回相应的值,否则返回NULL;         对于全外联结,结果表中包含两个表中所有满足条件的记录,如果在其中一个表中有满足联结条件的记录,则返回相应的值,否则返回NULL;
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部