当前位置: 代码网 > it编程>数据库>MsSqlserver > SQL Server 2005中的外联结用法

SQL Server 2005中的外联结用法

2024年05月18日 MsSqlserver 我要评论
sql server 2005中的外联结用法一:有两个表:学生表,学生选课表,表中数据为:学生表:学生选课表:要查看所有学生的选课信息,标准的sql语句,外联结语句为use stu_coursesel

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;

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com