在视图View_student_avg 中查找平均成绩在80 以上的学号及平均成绩。
时间: 2024-04-30 15:20:07 浏览: 271
你可以使用以下 SQL 语句在 View_student_avg 中查找平均成绩在80以上的学号及平均成绩:
```
SELECT student_id, AVG(grade) AS avg_grade
FROM View_student_avg
GROUP BY student_id
HAVING AVG(grade) >= 80;
```
这个 SQL 语句使用了 GROUP BY 和 HAVING 语句来按照学号分组并筛选出平均成绩大于等于80的学生。
相关问题
1、创建视图View_student,选择计算机软件专业的学生信息。 2、创建视图View_student_male,构建条件是选择计算机软件专业的男学生的学号、姓名,还要求包含其选修的课程号及成绩。 3、创建一个平均成绩的视图View_student_avg,包含有两个列:学号和平均成绩,并且学号列用“学号”来代替,平均成绩列用“均分”来表示。 4、在视图View_student_avg 中查找平均成绩在80 以上的学号及平均成绩。 5、为视图View_student 增加一条记录。查看并比较插入前和插入后的视图和基本表相应的数据,有什么变化?比较插入的这条记录是计算机软件专业的专业与插入的这条记录是除计算机软件专业以外的专业,请问他们在插入前和插入后的视图和基本表相应的数据,又有什么变化? (提示:视图数据插入Insert…… Values) 6、修改视图View_student_male,使选修“101”课程的成绩提高5 分。 (提示:视图数据修改:Update) 7、根据姓名(姓名由第5题给出)删除视图View_student第5题中所添加的那条记录。 (提示:视图数据删除:Delete) 思考:如删除视图View_student 中姓名叫“刘丽”的记录,则会出现什么情况?为什么?但是如果一定要删除视图View_student中“刘丽”的这条记录,请问怎么操作?
1、创建视图View_student:
```
CREATE VIEW View_student AS
SELECT * FROM Student WHERE major = '计算机软件';
```
2、创建视图View_student_male:
```
CREATE VIEW View_student_male AS
SELECT s.sid, s.name, sc.cno, sc.grade
FROM Student s, StuCou sc
WHERE s.sid = sc.sid AND s.major = '计算机软件' AND s.gender = '男';
```
3、创建视图View_student_avg:
```
CREATE VIEW View_student_avg AS
SELECT sid AS '学号', AVG(grade) AS '均分'
FROM StuCou
GROUP BY sid;
```
4、查询平均成绩在80以上的学生:
```
SELECT * FROM View_student_avg WHERE 均分 >= 80;
```
5、插入一条记录并比较变化:
```
-- 插入前
SELECT * FROM View_student;
INSERT INTO Student VALUES ('2021001', '张三', '男', '计算机软件');
-- 插入后
SELECT * FROM View_student;
-- 插入前
SELECT * FROM View_student_avg;
INSERT INTO StuCou VALUES ('2021001', '101', 90);
-- 插入后
SELECT * FROM View_student_avg;
SELECT * FROM StuCou;
```
如果插入的记录的专业与视图不同,则插入前后视图和基本表的数据无变化。如果一定要删除View_student中“刘丽”的记录,需要使用DELETE语句,但这会同时删除基本表中的记录,可能会影响其他视图的数据。如果只想删除View_student中的记录,可以使用INSTEAD OF DELETE触发器来实现。
6、修改视图View_student_male:
```
UPDATE View_student_male SET grade = grade + 5 WHERE cno = '101';
```
7、根据姓名删除View_student中的记录:
```
DELETE FROM View_student WHERE name = '刘丽';
```
1.定义一个所有年龄为18岁的学生的视图V_Student_1; 2.将学生的学号,平均成绩定义为一个视图V_Student_2; 3.定义一个学分为4的只有课程号、课程名称的视图V_Course_1; 4.定义一个学生的姓名,所选修的课程名及成绩的视图V_Student_3; 5.定义一个“经济管理学院”的学生学号、姓名,性别,年龄的视图V_Student_4; 6.删除视图V_Student_2; 7.在V_Student_4查询年龄小于20岁的学生信息; 8.在V_Student_4视图中,将所有的年龄增加一岁; 9.为表Course在Cname上建立非主簇索引i_Course; 10.为表Student在Sname和Sage上建立非主簇索引i_Student; 11.为表SC在Sno和Cno上建立唯一索引i_SC; 12.利用SP_HELPINDEX查看Student关系的所有类型的索引; 13.将i_Student索引的名字改为i_Student_1; 14.删除索引i_Course。
很好,这些都是关于数据库的问题。以下是回答:
1. 创建所有年龄为18岁的学生视图V_Student_1:
```sql
CREATE VIEW V_Student_1 AS
SELECT * FROM Student WHERE Sage = 18;
```
2. 创建学生的学号,平均成绩视图V_Student_2:
```sql
CREATE VIEW V_Student_2 AS
SELECT Sno, AVG(Score) AS AvgScore
FROM SC
GROUP BY Sno;
```
3. 创建学分为4的只有课程号、课程名称的视图V_Course_1:
```sql
CREATE VIEW V_Course_1 AS
SELECT Cno, Cname
FROM Course
WHERE Credit = 4;
```
4. 创建学生的姓名,所选修的课程名及成绩的视图V_Student_3:
```sql
CREATE VIEW V_Student_3 AS
SELECT Sname, Cname, Score
FROM Student, Course, SC
WHERE Student.Sno = SC.Sno AND Course.Cno = SC.Cno;
```
5. 创建“经济管理学院”的学生学号、姓名,性别,年龄的视图V_Student_4:
```sql
CREATE VIEW V_Student_4 AS
SELECT Sno, Sname, Ssex, Sage
FROM Student
WHERE Sdept = '经济管理学院';
```
6. 删除视图V_Student_2:
```sql
DROP VIEW V_Student_2;
```
7. 在V_Student_4查询年龄小于20岁的学生信息:
```sql
SELECT * FROM V_Student_4 WHERE Sage < 20;
```
8. 在V_Student_4视图中,将所有的年龄增加一岁:
```sql
UPDATE V_Student_4 SET Sage = Sage + 1;
```
9. 为表Course在Cname上建立非主簇索引i_Course:
```sql
CREATE INDEX i_Course ON Course(Cname);
```
10. 为表Student在Sname和Sage上建立非主簇索引i_Student:
```sql
CREATE INDEX i_Student ON Student(Sname, Sage);
```
11. 为表SC在Sno和Cno上建立唯一索引i_SC:
```sql
CREATE UNIQUE INDEX i_SC ON SC(Sno, Cno);
```
12. 利用SP_HELPINDEX查看Student关系的所有类型的索引:
```sql
EXEC SP_HELPINDEX 'Student';
```
13. 将i_Student索引的名字改为i_Student_1:
```sql
EXEC sp_rename 'Student.i_Student', 'i_Student_1', 'INDEX';
```
14. 删除索引i_Course:
```sql
DROP INDEX i_Course ON Course;
```
阅读全文