对于教学数据库的三个基本表 S (SNO, SNAME, AGE, SEX, SDEPT) SC (SNO, CNO, GRADE) C (CNO, CNAME, CDEPT, TNAME) 其中,S代表学生关系,其属性分别为:学号,姓名,年龄,性别,系别。 SC代表学习关系,其属性分别为:学号,课程号,成绩。 C代表课程关系,其属性分别为:课程号,课程名,开课系别,教师 试用SQL的查询语句表达下列查询: 1)检索至少选修DING老师所教课程中一门课程的男学生姓名。 2)检索全部学生都选修的课程的课程号与课程名。 3)检索年龄小于20岁的女学生的学号和姓名。 4)检索至少选修DING老师所教课程中一门课程的男学生姓名。
时间: 2024-03-07 16:52:12 浏览: 144
1)检索至少选修DING老师所教课程中一门课程的男学生姓名。
```
SELECT DISTINCT S.SNAME
FROM S, SC, C
WHERE S.SNO = SC.SNO AND SC.CNO = C.CNO AND C.TNAME = 'DING' AND S.SEX = '男';
```
2)检索全部学生都选修的课程的课程号与课程名。
```
SELECT C.CNO, C.CNAME
FROM C
WHERE NOT EXISTS (
SELECT S.SNO
FROM S
WHERE NOT EXISTS (
SELECT SC.CNO
FROM SC
WHERE S.SNO = SC.SNO AND C.CNO = SC.CNO
)
);
```
3)检索年龄小于20岁的女学生的学号和姓名。
```
SELECT S.SNO, S.SNAME
FROM S
WHERE S.AGE < 20 AND S.SEX = '女';
```
4)检索至少选修DING老师所教课程中一门课程的男学生姓名。
```
SELECT DISTINCT S.SNAME
FROM S, SC, C
WHERE S.SNO = SC.SNO AND SC.CNO = C.CNO AND C.TNAME = 'DING' AND S.SEX = '男';
```
相关问题
STUDENT表有 sno sname ssex sage sdept,couse 有cno cname credit semester,sc有sno cno gradr,请使用SQL语句完成查询选修了生物信息学课程且成绩高于该门课程平均分数的学生的姓名。
SELECT s.sname
FROM student s, sc, couse c
WHERE s.sno = sc.sno
AND sc.cno = c.cno
AND c.cname = '生物信息学'
AND sc.grade > (
SELECT AVG(sc.grade)
FROM sc, couse
WHERE sc.cno = couse.cno
AND couse.cname = '生物信息学'
)
```
有表SC(Sno,Cno,Grade),C(Cno,Cname,Cpno,Ccredit),S(Sno,Sname,Sage,Sdept)
这里给出的是三张表:
SC表包含了学生选课信息,包括学生编号(Sno)、课程编号(Cno)和成绩(Grade)。
C表包含了课程信息,包括课程编号(Cno)、课程名称(Cname)、先修课程编号(Cpno)和学分(Ccredit)。
S表包含了学生信息,包括学生编号(Sno)、姓名(Sname)、年龄(Sage)和所属学院(Sdept)。
这三张表都是关系型数据库中的表,可以通过SQL语句进行查询、插入、更新和删除等操作。例如,可以使用以下语句查询SC表中某个学生的选课情况:
```
SELECT C.Cname, SC.Grade
FROM C, SC
WHERE C.Cno = SC.Cno AND SC.Sno = '123';
```
这个语句会查询出学生编号为'123'的学生所选的所有课程的名称和成绩。其中,使用了表连接来将C表和SC表关联起来,并且使用了条件语句来筛选出特定的学生。