复制
收藏
提问
简洁

1、对于教学数据库的三个基本表: S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER) 试用SQL的查询语句表达下列查询: 1)检索LIU老师所讲授课程的课程名。 2)检索年龄大于19岁的男学生的学号和姓名。 3)检索学号为S1的学生的姓名及所学课程的课程名。 4)检索SUN同学不学的课程的课程号。 5)统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 6)求LIU老师所授课程的每门课程的平均成绩。 7)求年龄大于女同学平均年龄的男学生姓名和年龄。 8)检索姓名以L打头的所有学生的姓名和性别。 9)把低于60分的学生的成绩提高5%。 10)在SC中删除尚无成绩的选课元组。

4月前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁模式
深入研究一些

以下是针对您提供的查询要求的SQL查询语句:

1)检索LIU老师所讲授课程的课程名。

SELECT C.CNAME
FROM C
WHERE C.TEACHER = 'LIU';

2)检索年龄大于19岁的男学生的学号和姓名。

SELECT S.S#, S.SNAME
FROM S
WHERE S.AGE > 19 AND S.SEX = '男';

3)检索学号为S1的学生的姓名及所学课程的课程名。

SELECT S.SNAME, C.CNAME
FROM S, SC, C
WHERE S.S# = SC.S# AND SC.C# = C.C# AND S.S# = 'S1';

4)检索SUN同学不学的课程的课程号。

SELECT C.C#
FROM C
WHERE NOT EXISTS (
    SELECT *
    FROM SC
    WHERE SC.S# = (SELECT S# FROM S WHERE S.SNAME = 'SUN')
    AND SC.C# = C.C#
);

5)统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

SELECT SC.C#, COUNT(*) AS NUM_STUDENTS
FROM SC
GROUP BY SC.C#
HAVING COUNT(*) > 10
ORDER BY NUM_STUDENTS DESC, SC.C# ASC;

6)求LIU老师所授课程的每门课程的平均成绩。

SELECT C.CNAME, AVG(SC.GRADE) AS AVG_GRADE
FROM C, SC
WHERE C.C# = SC.C# AND C.TEACHER = 'LIU'
GROUP BY C.CNAME;

7)求年龄大于女同学平均年龄的男学生姓名和年龄。

SELECT S.SNAME, S.AGE
FROM S
WHERE S.AGE > (SELECT AVG(S2.AGE) FROM S WHERE S2.SEX = '女') AND S.SEX = '男';

8)检索姓名以L打头的所有学生的姓名和性别。

SELECT S.SNAME, S.SEX
FROM S
WHERE S.SNAME LIKE 'L%';

9)把低于60分的学生的成绩提高5%。

UPDATE SC
SET GRADE = GRADE * 1.05
WHERE GRADE < 60;

10)在SC中删除尚无成绩的选课元组。

DELETE FROM SC
WHERE GRADE IS NULL;

请注意,这些SQL语句是基于您提供的表结构和字段名称编写的。在实际应用中,可能需要根据数据库的具体SQL方言进行调整。

你觉得结果怎么样?

以上内容由AI搜集生成,仅供参考

在线客服