(一)编写SQL语句
以下各小题题基于教学数据库的三个基本表
学生 S(S#,SNAME,AGE,SEX)
学习 SC(S#,C#,GRADE)
课程 C(C#,CNAME,TEACHER)
1. 试用元组表达式和关系代数表达式表示下列查询语句:检索年龄小于23岁的男同学的姓名和学号。
2. 试用SQL的查询语句表达下列查询: 检索"王兰"同学不学的课程的课程号。
3. 试用SQL的查询语句表达下列查询: 检索全部学生都选修的课程的课程号与课程名。
4.试用SQL更新语句表达以下更新操作:把低于总平均成绩的女同学成绩提5%。
答案:
元组表达式:{t|(?u)(S(u)∧u[3]<23∧u[4]='男'∧t[1]=u[1]∧t[2]=u[2])}
关系代数表达式:πS#,SNAME(σAGE<23∧SEX='男'(S))
select C# from C where C# not in(select C# from SC where S# in(select S# from S where SNAME='王兰'))
select C#,CNAME from C where not exists(select * from S where not exists(select * from SC where SC.S#=S.S# and SC.C#=C.C#))
update SC set GRADE=GRADE*1.05 where GRADE<(select AVG(GRADE) from SC) and S# in(select S# from S where SEX='女')
第1题:
在“学生一选课一课程”数据库中的三个关系如下: S(S#,SNAME,SEX,AGE),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER) 现要查找选修“数据库技术”这门课程且性别为“女”的学生姓名和成绩,可使用如下的SQL语句: SELECT SNAME,GRADE FROM S,SC,C WHERE CNAME=‘数据库技术’AND S.S#=SC.S# AND SEX=‘女’AND 【】 。
第2题:
学生关系模式 S( S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是( )。
A. DELETE Age from S B. ALTER TABLE S DROP Age
C. UPDATE S Age D. ALTER TABLE S ‘Age’
第3题:
该题基于“学生-选课-课程”数据库中的3个关系。
学生基本信息S(S#,SNAME, SEX, AGE)
选课信息SC(S#, C#, GRADE)
课程信息C(C#, CNAME, TEACHER)
若要求“查询选修了3门以上课程的学生的学生号”,正确的SQL语句是( )。
A.SELECT S# FROM SC GROUP BY S# WHERE COUNT (*)>3
B.SELECT S# FROM SC GROUP BY S# HAVING COUNT(*)>3
C.SELECT S# FROM SC ORDER BY S# WHERE COUNT(*)>3
D.SELECT S# FROM SC ORDER BY S# HAVING COUNT(*)>3
第4题:
基于“学生-选课-课程”数据库中的如下三个关系:
学生基本信息:S(S#,SNAME,SEX,AGE)
选课信息:SC(S#,C#,GRADE)
课程信息:C(C#,CNAME,TEACHER)
若要求“查询选修了5门以上课程的学生的学生号”,正确的SQL语句是( )。
第5题:
以下2题是基于“学生一选课一课程”数据库中的三个关系: S(S#,SNAME,SEX,AGE),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER)
若要求查找选修“数据库技术”这门课程的学生姓名和成绩,将使用关系( )。
A.S和SC
B.SC和C
C.S和C
D.S、SC和C