(一)编写SQL语句以下各小题题基于教学数据库的三个基本表学生 S(S#,SNAME,AGE,SEX)学习 SC(S#,C#,GRADE)课程 C(C#,CNAME,TEACHER)1. 试用元组表达式和关系代数表达式表示下列查询语句:检索年龄小于23岁的男同学的姓名和学号。2. 试用SQL的查询语句表达下列查询: 检索"王兰"同学不学的课程的课程号。3. 试用SQL的查询语句表达下列查询: 检索全部学生都选修的课程的课程号与课程名。4.试用SQL更新语句表达以下更新操作:把低于总平均成绩的女同学成绩提5

题目

(一)编写SQL语句

以下各小题题基于教学数据库的三个基本表

学生 S(S#,SNAME,AGE,SEX)

学习 SC(S#,C#,GRADE)

课程 C(C#,CNAME,TEACHER)

1. 试用元组表达式和关系代数表达式表示下列查询语句:检索年龄小于23岁的男同学的姓名和学号。

2. 试用SQL的查询语句表达下列查询: 检索"王兰"同学不学的课程的课程号。

3. 试用SQL的查询语句表达下列查询: 检索全部学生都选修的课程的课程号与课程名。

4.试用SQL更新语句表达以下更新操作:把低于总平均成绩的女同学成绩提5%。


相似考题
参考答案和解析

答案:

  1. 元组表达式:{t|(?u)(S(u)∧u[3]<23∧u[4]='男'∧t[1]=u[1]∧t[2]=u[2])}

    关系代数表达式:πS#,SNAMEAGE<23SEX='男'(S))

  2. select C# from C where C# not in(select C# from SC where S# in(select S# from S where SNAME='王兰'))

  3. 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#))

  4. update SC set GRADE=GRADE*1.05 where GRADE<(select AVG(GRADE) from SC) and S# in(select S# from S where SEX='女')


更多“(一)编写SQL语句以下各小题题基于教学数据库的三个基本表 学生 S(S#,SNAME,AGE,SE ”相关问题
  • 第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 【】 。


    正确答案:SC.S#= C.C#或C.C#= SC.S#
    在急性这些操作的时候需将这些关系联系起来

  • 第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


    正确答案:B
    解析: SELECT语句的一般格式是:
    SELECT [ALL|DISTICT]目标列表达式>[,目标列表达式>]…
    FROM基本表(或视图)>[,基本表(或视图)>]…
    [WHERE条件表达式>)
    [GROUP BY列名1>[HAVING内部函数表达式>]]
    [ORDER BY列名>[ASC|DESC]];
      整个语句的含义是:根据WHERE子句的条件表达式,从基本裹或视图找出满足条件的元组,按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。如果有ORDER子句,则结果表要根据指定的列名1按升序或降序掉序。GROUP子句将结果按列名1分组,每个组产生结果表中的一个元组。通常在每组中给出作用集函数,分组的附加条件用HAVING短语给出,只有满足内部函数表达式的组才予以输出。
      根据题童,先用GROUP BY于句按S#进行分组,再用集函数 COUNT对每一组计数。HAVING短语的条件是学生选修的课超过3门的组才会被选出来。所以正确的是选项B)。

  • 第4题:

    基于“学生-选课-课程”数据库中的如下三个关系:

    学生基本信息:S(S#,SNAME,SEX,AGE)

    选课信息:SC(S#,C#,GRADE)

    课程信息:C(C#,CNAME,TEACHER)

    若要求“查询选修了5门以上课程的学生的学生号”,正确的SQL语句是( )。


    正确答案:C
    先用GroupBy子句按S#对记录分组,再用COUNT函数统计每组的记录数。HAVING短语指定选择组的条件,只有满足条件(元组数>5,表示此学生选修的课程超过5门)的组才会被选出来。故用SQL语句:SELECTS#FROMSCGROUPBYS#HAVINGCOUNT(*)>5。

  • 第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


    正确答案:D