将视图sc_view2中学号为“2007030122”、课程号为“c02”的成绩改为87。
时间: 2024-03-20 15:41:18 浏览: 86
你可以使用以下的SQL语句来实现你的需求:
```
UPDATE sc_view2 SET grade = 87 WHERE student_id = '2007030122' AND course_id = 'c02';
```
这条语句将会更新 `sc_view2` 视图中学号为“2007030122”、课程号为“c02”的成绩为 87。注意,这个视图的数据源可能是多张表,如果你要修改的表不在 `sc_view2` 视图的数据源中,那么这条语句将会执行失败。
相关问题
在成绩表中查询至少选修课课程号为c01.c02的学生学号和姓名
好的,我理解了你的问题。根据你的要求,我可以给出以下 SQL 查询语句:
```sql
SELECT s.s_id, s.s_name
FROM student s
WHERE EXISTS (
SELECT *
FROM score sc
WHERE sc.s_id = s.s_id
AND sc.c_id IN ('c01', 'c02')
GROUP BY sc.s_id
HAVING COUNT(DISTINCT sc.c_id) >= 2
)
```
这个查询语句中,我们首先在 `score` 表中找到所有选修了课程号为 `c01` 或 `c02` 的成绩记录,然后按学生 ID 分组,只保留选修了这两门课的学生,最后再在 `student` 表中找到这些学生的学号和姓名。
sql 根据实验2创建的s、c和sc表完成如下查询: s(sno,sname,age,sex,sdept,major c(cno,cname,cpno,teacher,credit) sc(sno,cno,grade) 1查询学生选课表中的全部数据。 2 查询计算机系学生的姓名,年龄。 3查询成绩在70-80分之间的学生的学号课程号和成绩。 4 查询计算机系年龄在18-20之间且性别为“男”的学生的姓名和年龄。 5 查询课程号为“C01”的课程的最高分数。 6查询计算机系学生的最大年龄和最小年龄。 7统计每个系的学生人数。 8统计每门课程的选课人数和考试最高分。 9查询每个学生的选课门数和考试总成绩,并报 数的升序显示结果。 写笔记 10查询总成绩超过200分的学生,要求列出学号,总成绩。 11查询选修了“C02”的学生的姓名和所在系。 12 查询成绩在80分以上的学生的姓名,课程号和成绩并按成绩的降序排列。 13 查询哪些课程没有人选修,要求列出课程号和课程名。14 查询缺少了成绩的学生的学号和课程号。 15查询数学系学生的学号和姓名。 16 查询选修了课程的学生学号 17 查询选修了数学课的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。 18查询选修数学课其且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.8输出。 19 查询数学系或计算机系姓刘的学生的信息。
1. 查询学生选课表中的全部数据。
```
SELECT * FROM sc;
```
2. 查询计算机系学生的姓名,年龄。
```
SELECT s.sname, s.age FROM s WHERE s.sdept = '计算机系';
```
3. 查询成绩在70-80分之间的学生的学号课程号和成绩。
```
SELECT sc.sno, sc.cno, sc.grade FROM sc WHERE sc.grade BETWEEN 70 AND 80;
```
4. 查询计算机系年龄在18-20之间且性别为“男”的学生的姓名和年龄。
```
SELECT s.sname, s.age FROM s WHERE s.sdept = '计算机系' AND s.age BETWEEN 18 AND 20 AND s.sex = '男';
```
5. 查询课程号为“C01”的课程的最高分数。
```
SELECT MAX(sc.grade) FROM sc WHERE sc.cno = 'C01';
```
6. 查询计算机系学生的最大年龄和最小年龄。
```
SELECT MAX(s.age), MIN(s.age) FROM s WHERE s.sdept = '计算机系';
```
7. 统计每个系的学生人数。
```
SELECT s.sdept, COUNT(*) FROM s GROUP BY s.sdept;
```
8. 统计每门课程的选课人数和考试最高分。
```
SELECT sc.cno, COUNT(*), MAX(sc.grade) FROM sc GROUP BY sc.cno;
```
9. 查询每个学生的选课门数和考试总成绩,并按升序显示结果。
```
SELECT sc.sno, COUNT(sc.cno), SUM(sc.grade) FROM sc GROUP BY sc.sno ORDER BY SUM(sc.grade) ASC;
```
10. 查询总成绩超过200分的学生,要求列出学号,总成绩。
```
SELECT sc.sno, SUM(sc.grade) FROM sc GROUP BY sc.sno HAVING SUM(sc.grade) > 200;
```
11. 查询选修了“C02”的学生的姓名和所在系。
```
SELECT s.sname, s.sdept FROM s, sc WHERE s.sno = sc.sno AND sc.cno = 'C02';
```
12. 查询成绩在80分以上的学生的姓名,课程号和成绩并按成绩的降序排列。
```
SELECT s.sname, sc.cno, sc.grade FROM s, sc WHERE s.sno = sc.sno AND sc.grade > 80 ORDER BY sc.grade DESC;
```
13. 查询哪些课程没有人选修,要求列出课程号和课程名。
```
SELECT c.cno, c.cname FROM c WHERE NOT EXISTS (SELECT * FROM sc WHERE c.cno = sc.cno);
```
14. 查询缺少了成绩的学生的学号和课程号。
```
SELECT sc.sno, sc.cno FROM sc WHERE sc.grade IS NULL;
```
15. 查询数学系学生的学号和姓名。
```
SELECT s.sno, s.sname FROM s WHERE s.sdept = '数学系';
```
16. 查询选修了课程的学生学号。
```
SELECT DISTINCT sc.sno FROM sc;
```
17. 查询选修了数学课的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
```
SELECT sc.sno, sc.grade FROM sc, c WHERE sc.cno = c.cno AND c.cname = '数学' ORDER BY sc.grade DESC, sc.sno ASC;
```
18. 查询选修数学课其且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.8输出。
```
SELECT sc.sno, sc.grade * 0.8 FROM sc, c WHERE sc.cno = c.cno AND c.cname = '数学' AND sc.grade BETWEEN 80 AND 90;
```
19. 查询数学系或计算机系姓刘的学生的信息。
```
SELECT * FROM s WHERE s.sdept IN ('数学系', '计算机系') AND s.sname LIKE '刘%';
```
阅读全文