复制
收藏
提问
简洁
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方言进行调整。
你觉得结果怎么样?