SQL Server 2005中的外联结用法
SQL Server 2005中的外联结用法一:
有两个表:学生表,学生选课表,表中数据为:
学生表:
学生选课表:
要查看所有学生的选课信息,
标准的SQL语句,外联结语句为
use stu_course select L.sno,sname,ssex,sage,sdept,cno,grade from student L,sc where L.sno=sc.sno(*)
理论上的结果为:
但是,在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
运行结果为:
同时,还可以在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)
这时,运行结果为:
以上这个例子是左外联结查询,即:结果表中包含第一个表中所有满足条件的
记录,如果在第二个表中有满足联结条件的记录,则返回相应的值,否则返回NULL
SQLServer2005中的外联结查询用法(续):
有三个表:学生表,学生选课表,课程表,表中数据为:
学生表:
学生选课表:
课程表:
左联结查询举例:
use stu_course select L.sno,sname,ssex,sage,sdept,cno,grade from student L left join sc on L.sno=sc.sno
结果为:
右联结查询举例:
use stu_course select sno,course.cno,course.cname from sc right join course on sc.cno=course.cno
结果为:
全外联结查询举例:
use stu_course select sno,course.cno,course.cname from sc full join course on sc.cno=course.cno
结果为:
如果将这个全外联中的左右两个表交换顺序:
use stu_course select sno,course.cno,course.cname from course full join sc on sc.cno=course.cno
结果仍为:
由以上例子可以看出:
对于左外联结,结果表中包含第一个表中所有满足条件的记录,如果在第二个表中有满足联结条件的记录,则返回相应的值,否则返回NULL;
对于右外联结,结果表中包含第二个表中所有满足条件的记录,如果在第一个表中有满足联结条件的记录,则返回相应的值,否则返回NULL;
对于全外联结,结果表中包含两个表中所有满足条件的记录,如果在其中一个表中有满足联结条件的记录,则返回相应的值,否则返回NULL;
编程语言
- ThinkPad 笔记本如何调节LCD屏幕亮度
- Dreamweaver制作网页打开特效教程
- Win10 Mobile 10586升级后无限重启怎么办 硬重启帮您
- Win8系统提示音频设备有问题有一个或多个音频服
- Xbox One版Win10首个预览版9月份发布
- 如何在textarea文本输入区内实现换行
- Win10 Build 9901系统更新 预览版新版本下载
- McAfee Framework存在远程格式串处理漏洞
- Win10家庭版今日(7月30)正式在中国官方商城开卖
- Win10 Mobile预览版更新完10536.1000后才收到10536.100
- Win10 RS2更新了什么-Win10 RS2最终版本号1704首曝
- Windows7如何查看回收站对应的文件夹有哪些方法
- Win10让Charms栏回归桌面的方法教程
- 取消Windows XP系统开机启动画面的小技巧
- win8系统怎么下载安装USB百兆网卡?
- XP系统下磁盘空间变少了怎么办?XP系统磁盘空间