有学生一课程关系数据库,各关系表描述如下: 学生(学号,姓名,性别,年龄,系) 课程(课程号,课程名,先修课,学分) 选课(学号,课程号,成绩) 用SQL语向实现下列问题 1、向学生选修课程表中插入元组“学生S6选修课程号C2”。 2、查询每个学生的学号、姓名及其所选课程的课程名: 3、检索姓”李”且倒数第2个字为”华”字的学生的姓名和学号: 4、删除选课成绩在60分以下的学生记录; 5、把“大学英语”课程成绩提高5%; 6、求出男同学的每一年龄组(超过4人)有多少人? 7、定义视图S_age,其中包括学生学号以及每个学生选修课程的门数(要求成绩非空)和平均成绩; 8、查询每个学生的选课总学分,要求列出学生学号和总学分(说明:考 试成绩超过60才能获得此课程的学分)9、查询计算机系成绩在80分以上的学生姓名、课程名和成绩,并按成绩降序排列结果; 10、查询既选修了“数据库”又选修了“操作系统”的学生学号及姓名。
时间: 2023-11-16 17:37:26 浏览: 589
查询数据库中所有有成绩的学生的学号和课程号
4星 · 用户满意度95%
1、向学生选修课程表中插入元组“学生S6选修课程号C2”:
```
INSERT INTO 选课 (学号, 课程号) VALUES ('S6', 'C2');
```
2、查询每个学生的学号、姓名及其所选课程的课程名:
```
SELECT 学生.学号, 学生.姓名, 课程.课程名
FROM 学生, 选课, 课程
WHERE 学生.学号 = 选课.学号 AND 选课.课程号 = 课程.课程号;
```
3、检索姓”李”且倒数第2个字为”华”字的学生的姓名和学号:
```
SELECT 学号, 姓名
FROM 学生
WHERE 姓名 LIKE '李%华_';
```
4、删除选课成绩在60分以下的学生记录:
```
DELETE FROM 选课 WHERE 成绩 < 60;
```
5、把“大学英语”课程成绩提高5%:
```
UPDATE 选课 SET 成绩 = 成绩 * 1.05 WHERE 课程号 = 'C1';
```
6、求出男同学的每一年龄组(超过4人)有多少人?
```
SELECT TRUNCATE(年龄/10, 0)*10 AS 年龄组, COUNT(*) AS 人数
FROM 学生
WHERE 性别 = '男'
GROUP BY 年龄组
HAVING COUNT(*) > 4;
```
7、定义视图S_age,其中包括学生学号以及每个学生选修课程的门数(要求成绩非空)和平均成绩:
```
CREATE VIEW S_age AS
SELECT 学号, COUNT(*) AS 选修门数, AVG(成绩) AS 平均成绩
FROM 选课
WHERE 成绩 IS NOT NULL
GROUP BY 学号;
```
8、查询每个学生的选课总学分,要求列出学生学号和总学分(说明:考试成绩超过60才能获得此课程的学分):
```
SELECT 选课.学号, SUM(课程.学分) AS 总学分
FROM 选课, 课程
WHERE 选课.课程号 = 课程.课程号 AND 成绩 > 60
GROUP BY 选课.学号;
```
9、查询计算机系成绩在80分以上的学生姓名、课程名和成绩,并按成绩降序排列结果:
```
SELECT 学生.姓名, 课程.课程名, 选课.成绩
FROM 学生, 选课, 课程
WHERE 学生.学号 = 选课.学号 AND 选课.课程号 = 课程.课程号 AND 学生.系 = '计算机系' AND 选课.成绩 > 80
ORDER BY 选课.成绩 DESC;
```
10、查询既选修了“数据库”又选修了“操作系统”的学生学号及姓名:
```
SELECT S1.学号, S1.姓名
FROM 学生 S1, 选课 C1, 选课 C2
WHERE S1.学号 = C1.学号 AND S1.学号 = C2.学号 AND C1.课程号 = 'C3' AND C2.课程号 = 'C4';
```
阅读全文