- student表

- 课程表

- 成绩表

- 交叉连接
两个表的广义笛卡尔积——没有连接条件的多表查询
select stdname,elename from Student,Elective
或select stdname,elename from Student cross join Elective

-
内连接
默认连接——返回交叉连接结果中所有符合连接条件的行
select a.StdName,b.EleName
from Student a,Elective b,Student_Elevtive c
where a.StdId=c.StdId and b.EleId=c.EleId
或
select a.StdName,c.EleName
from Student a join Student_Elevtive b on a.StdId=b.StdId
join Elective c on c.EleId=b.EleId

缺点:
若存在没有选修任何选修课的学生,Student_Elevtive表中不存在这些学生,无查询结果
- 外连接
两个表的左右连接
select a.StdName,b.EleId
from Student a left join Student_Elevtive b on a.StdId=b.StdId

多于两个表的左右连接
select a.StdName,c.EleName
from Student a left join Student_Elevtive b on a.StdId=b.StdId
left join Elective c on c.EleId=b.EleId

- 全连接

select ISNULL(a.cusid,b.cusid),a.cusname,b.goodsname,b.quantity
from Customer a full join sale b on a.cusid=b.cusid
order by 1

isnull()函数:若第一个函数非空,返回第一个,若为空,返回第二个
- 自连接
select a.StdId,a.StdName,b.StdName
from Student a left join student b on a.SideId=b.StdId

3315

被折叠的 条评论
为什么被折叠?



