sqlserver两表查询关联_SQL之多表查询

一、表的关联

union 是将两个表合并为一,会除种

union all 是将两张表和二为一,不会除重

二、表的联结

联结方式:cross join、inner join、left join、right join、full join

区别在于,如需要左边表的信息全显示就是left join,右边表全显示就是right join,两表共同的选取就是inner join,其他联结方式应用较少,以下为例子,可以看出同样的2张表,取不同的联结方式,结果也不同

三、表联结练习

1.查询所有学生的学号、姓名、选课数、总成绩

分析注意:由于这里用到student表的所有信息,所以是左查询left join,并且一个学生选了多门课程,所以对学号分组

2.查询平均成绩大于85的所有学生学号、姓名、平均成绩

分析注意:这个同样用到了student表的所有信息,所以用left join,学号分组,对分组后的选取用having语句,而不是where选取单行!

3.查询学生的选课情况:学号、姓名、课程号、课程名称

分析注意:这里通过表score做为中间联结,取共同部分,3个表通过使用2个inner join...on...语句实现

四、case表达式

case 表达式用来进行多条件判断

case when...then...else...end

五、练习注意

这里由于每个队打比赛有主场和客场的区别,所以球员名字会重复,注意用到distinct

这里注意由于用到了group by,所以再用到order by的时候一定要有group by里的所有元素,缺一个都不行!

一、表的关联 union 是将两个表合并为一,会除种 union all 是将两张表和二为一,不会除重 二、表的联结 联结方式:cross join、inner join、left join、right join、full join 区别在于,如需要左边表的信息全显示就是left join,右边表全显示就是right join,两表共同的选取就是inner join,其他联结方式应用较少,以下为例子,可以看出同样的2张表,取不同的联结方式,结果也不同 三、表联结练习 1.查询所有学生的学号、姓名、选课数、总成绩 分析注意:由于这里用到student表的所有信息,所以是左查询left join,并且一个学生选了多门课程,所以对学号分组 2.查询平均成绩大于85的所有学生学号、姓名、平均成绩 分析注意:这个同样用到了student表的所有信息,所以用left join,学号分组,对分组后的选取用having语句,而不是where选取单行! 3.查询学生的选课情况:学号、姓名、课程号、课程名称 分析注意:这里通过表score做为中间联结,取共同部分,3个表通过使用2个inner join...on...语句实现 四、case表达式 case 表达式用来进行多条件判断 case when...then...else...end 五、练习注意 这里由于每个队打比赛有主场和客场的区别,所以球员名字会重复,注意用到distinct 这里注意由于用到了group by,所以再用到order by的时候一定要有group by里的所有元素,缺一个都不行!
经验分享 程序员 微信小程序 职场和发展