以上表为练习需要的数据表
PART1 表的加法练习(union语句)
1.union语句
此处先创建一张新的表,命名为course1并且插入数据如下:
将course表和course1表用union语句进行两表相加,sql语句为:
SELECT 课程号,课程名称 FROM course UNION SELECT 课程号,课程名称 FROM course1;
执行以上语句得到
注意到course1表中课程号为0001的这一行数据因为在course表有一行完全一样的数据,所以合并为一条数据了.
2.union all
如果想保留course1中课程号为0001的哪一行,那么在上述sql语句的union后加一个单词'all'
SELECT 课程号,课程名称,教师号 FROM course UNION ALL SELECT 课程号,课程名称,教师号 FROM course1;
执行该语句得到结果如下
如果想要表的加法不合并相同数据的话,就使用union all语句
PART2 表的联结练习(join语句)
1.内联结(inner join)
SELECT a.学号,a.姓名,b.课程号,b.成绩 FROM student AS a INNER JOIN score AS b ON a.学号=b.学号;
2.左联接(left join)
SELECT a.学号,a.姓名,b.课程号 FROM student AS a LEFT JOIN score AS b ON a.学号=b.学号;
3.右联结(right join)
SELECT a.学号,a.姓名,b.课程号 FROM student AS a right JOIN score AS b ON a.学号=b.学号;
4.联结章节练习
问题一:查询所有学生的学号、姓名、选课数、总成绩
SELECT a.学号,a.姓名,count(b.课程号)AS 选课数,SUM(b.成绩)AS 总成绩 FROM student as a LEFT JOIN score AS b on a.学号=b.学号 GROUP BY a.学号;
问题二:查询平均成绩大于85的所有学生的学号、姓名和平均成绩