数据库原理试题库 联系客服

发布时间 : 星期一 文章数据库原理试题库更新完毕开始阅读497329ee783e0912a2162ae1

(SELECT 学号 FROM S WHERE 姓名='WANG'))

(8) 查询至少选修两门课程的学生学号。

π学号(σ1=4∧2≠5(选课×选课)) (选课自乘之后,同一个学号下两个课程号不同的元组)

SELECT 学号 FROM 选课 GROUP BY 学号 HAVING COUNT(课程号)>=2 (9) 查询全部学生都选修的课程的课程号与课程名。

π课程号, 课程名 (选课∞(π学号,课程号(选课)?π学号(学生)))

(涉及到全部值时,应用除法,“除数”是全部量。)

SELECT 课程号,课程名 FROM 课程 WHERE NOT EXISTS (SELECT * FROM 学生 WHERE NOT EXISTS

(SELECT * FROM 选课 WHERE 选课.学号=学生.学号 AND 选课.课程号=课程.课程号))

(10) 查询选修课程包含刘军老师所授课程的学生学号。 π学号(σ任课教师='刘军'(学生∞选课∞课程))

SELECT 学号 FROM 学生 WHERE 学号 IN

(SELECT 学号 FROM 选课 WHERE 学生.学号=选课.学号 AND 课程号 IN (SELECT 课程号 FROM 课程 WHERE 任课教师='LIU')) (请讨论一下,本题是否可如此:SELECT DISTINGCT

学号 FROM 选课 WHERE EXISTS (SELECT 课程号 FROM 课程 WHERE 任课教师='LIU'))

(二)试用SQL查询语句表达下列对教学数据库中三个基本表学生、选课、课程的查询要求:

(1)统计有学生选修的课程门数。

SELECT COUNT(DISTINCT 课程号) FROM 选课 (2)求选修C4课程的学生的平均年龄。

SELECT AVG(年龄) FROM 学生 WHERE 学号 IN (SELECT 学号 FROM 选课 WHERE 课程号='C4') (3)求LIU老师所授课程的每门课程的学生平均成绩。

SELECT 课程名,AVG(成绩) FROM 选课 ,课程 WHERE 课程号 IN (SELECT 课程号 FROM 课程 WHERE 任课教师='LIU') GROUP BY 课程号

(4)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修

人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 SELECT DISTINCT 课程号,COUNT(学号) FROM 选课

GROUP BY 课程号 HAVING COUNT(学号)>10 ORDER BY 2 DEC,课程号 (5)查询学号比WANG同学大,而年龄比他小的学生姓名。

SELCET 姓名 FROM 学生 AS X WHERE X.学号>SOME

49

(SELECT 学号 FROM 学生 AS Y WHERE Y.姓名='WANG' AND X.年龄

SELECT 姓名,年龄 FROM 学生 WHERE 姓名 LIKE 'WANG%' (7)在选课中检索成绩为空值的学生学号和课程号。

SELECT 学号,课程号 FROM 选课 WHERE 成绩 IS NULL (8)求年龄大于女同学平均年龄的男学生姓名和年龄。

SELECT 姓名,年龄 FROM 学生 AS X

WHERE X.性别='男' AND X.年龄>(SELECT AVG(年龄) FROM 学生 AS Y WHERE Y.性别='女')

(9)求年龄大于所有女同学年龄的男学生姓名和年龄。

SELECT 姓名,年龄 FROM 学生 AS X

WHERE X.性别='男' AND X.年龄>ALL (SELECT 年龄 FROM 学生 AS Y

WHERE Y.性别='女')

(10)查询?刘军?老师所教的所有课程的课号和学时 (11)查询所有学生的基本情况

(12)求在本学期任课的全部教师姓名,担任两门课以上的教师只出现一次。 (13)查询23岁以上男生的学号和姓名。

(14)求所有男生的学号、姓名、年龄。要求按年龄递增排序。 (15)求关系S中学生总数

(16)求学习?C2?课的学生总数:

(17)将关系C中课程号为C2的课程任课教师改为?WANG? (18)求任课教师总数. (19)求学生S1的总分数. (20)求学生的最大年龄.

(21)求出年龄等于最大年龄的所有学生的姓名。

SELECT 学号,姓名 FROM 学生

WHERE 年龄=(SELECT MAX(年龄) FROM 学生 )

(22)求选修课程号为“C2”的课程的学生的姓名和专业 (23)求至少选修两门课程的学生学号 (三)试用SQL更新语句表达对教学数据库中三个基本表学生、选课、课程的各个更新操作:

(1)往基本表学生中插入一个学生元组(?S9?,?WU?,18)。 INSERT INTO 学生(学号,姓名,年龄) VALUES('59','WU',18)

(2)在基本表学生中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,

并把检索到的值送往另一个已存在的基本表STUDENT(学号,姓名,性别)。 INSERT INTO STUDENT(学号,姓名,性别)

SELECT 学号,姓名,性别 FROM 学生 WHERE NOT EXISTS

(SELECT * FROM 选课 WHERE 成绩>=80 AND 学生.学号=选课.学号) (3)在基本表选课中删除尚无成绩的选课元组。

DELETE FROM 选课 WHERE 成绩 IS NULL

50