创建一个视图,求各门课程的课程号、选课人数、平均分、最高分,并利用该视图查询 1 号课程的选课人数、平均分、最高分;
可以使用以下 SQL 语句创建一个视图,它会显示每门课程的课程号、选课人数、平均分和最高分:
CREATE VIEW course_info AS
SELECT course_id, COUNT(*) AS student_count, AVG(score) AS avg_score, MAX(score) AS max_score
FROM course_selection
GROUP BY course_id;
然后,你可以使用以下查询来获取 1 号课程的选课人数、平均分和最高分:
SELECT student_count, avg_score, max_score
FROM course_info
WHERE course_id = 1;
一、
什么意思呢,就是说,如果现在地址表的id属性名改为了sid,而姓名表的id属性名仍然是id。如图,那么仍可以对两表进行内连接,只需要指定连接条件为 on student_name.id=student_adress.sid
就可以了。但是下面这两个表不能进行自然连接了,因为他们没有同名属性(id和sid不同名)。
二、
如果此时你要进行select操作,注意!!!
自然连接 select id from student_name natural join student_adress ;可以,因为自然连接的id只有一列。
但是内连接 select id from student_name inner join student_adress on student_name.id=student_adress.id;会报错,因为内连接返回的id有两列!!!必须指明要选择的是来自哪个表的id。
改成 select student_name.id from student_name inner join student_adress on student_name.id=student_adress.id;就可以了。
可以参考SQL语句错误 Error Code: 1052. Column ‘id‘ in field list is ambiguous