例题1
设有如图所示的关系S,SC,C,试用关系代数表达式表示下列查询语句:
S#
SNAME
AGE
SEX
1
李强
23
男
2
刘丽
22
女
3
张友
22
男
C#
CNAME
TEACHER
K1
C语言
王华
K5
数据库原理
程军
K8
编译原理
程军
S#
C#
GRADE
1
K1
83
2
K1
85
5
K1
92
2
K5
90
5
K5
84
5
K8
80
第1页/共15页
(1)检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)。
(2)检索年龄大于21的男学生学号(S#)和姓名(SNAME)。
(3)检索至少选修“程军”老师所授全部课程的学生姓名。
(4)检索“李强”同学不学课程的课程号。
(5)检索至少选修两门课程的学生学号(S#)。
(6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。
(7)检索选修课程包含“程军”老师所授课程之一的学生学号(S#)。
(8)检索选修课程号为K1和K5的学生学号(S#)。
(9)检索选修全部课程的学生姓名(SNAME)。
(10)检索选修课程包含学号为2的学生所修课程的学生学号(S#)。
(11)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)。
第2页/共15页
(2)
(1)
(3)
(4)
第3页/共15页
(5)
(6)
(7)
(8)
第4页/共15页
(9)
(10)
(11)
第5页/共15页
(1) 检索“程军”老师所授课程的课程号CNO和课程名CNAME。
SELECT CNO,CNAME
FROM C
WHERE TEACHER=’程军’;
(2)检索年龄大于21的男学生学号SNO和姓名SNAME。
SELECT SNO,SNAME
FROM S
WHERE AGE>21 AND SEX=’男’;
第6页/共15页
(3)检索至少选修“程军”老师所授全部课程的学生姓名SNAME。
SELECT SNAME
FROM S
WHERE NOT EXISTS
(SELECT *
FROM C
WHERE TEACHER=’程军’ AND NOT EXISTS
(SELECT *
FROM SC
WHERE = AND =));
第7页/共15页
(4)检索“李强”同学不学课程的课程号。
SELECT CNO
FROM C
WHERE CNO NOT IN
(SELECT CNO
FROM SC,S
WHERE = AND =’李强’) ;
SELECT CNO
FROM C
EXCEPT
SELECT CNO
FROM SC,S
WHERE = AND =’李强’ ;
或
第8页/共15页
(5)检索至少选修两门课程的学生学号。
SELECT SNO
FROM SC A, SC B
WHERE = AND <>;
(6)检索全部学生都选修的课程的课程号和课程名。
SELECT CNO,CNAME
FROM C
WHERE NOT EXISTS
(SELECT *
FROM S
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE = AND =));
第9页/共15页
(7)检索选修课程包含“程军”老师所授课程之一的学生学号。
SELECT SNO
FROM C,SC
WHERE = AND =’程军’ ;
(8)检索选修课程号为k1和k5的学生学号。
SELECT SNO
FROM SC
WHERE =’k1’
INTERSECT
SELECT SNO
FROM SC
WHERE =’k5’;
或:
SELECT SNO
FROM SC A, SC B
WHERE = AND =’k1’ AND =’k5’ ;
第10页/共15页
数据库习题课PPT课件 来自淘豆网m.daumloan.com转载请标明出处.