sokaoti.com
数据库上机实验题目和答案

设教学数据库中有4个关系:教师关系T(T,TNAME,TITLE)课程关系C(C,CNAME,T)学生关系S(S,SNAME,AGE,SEX)选课关系SC(S,C,SCORE)试用关系代数表达式表示各个查询语句。(1)检索年龄小于17岁的女学生的学号和姓名。(2)检索男学生所学课程的课程号和课程名。(3)检索男学生所学课程的任课老师的职工号和姓名。(4)检索至少选修了两门课程的学生学号。(5)检索至少有学号为S2和S4学生选修的课程的课程号。(6)检索WANG同学不学的课程的课程号。(7)检索全部学生都选修的课程的课程号与课程名。(8)检索选修课程包含LIU老师所授全部课程的学生学号。


①检索年龄小于17岁的女学生的学号和姓名。
SELECT S#.SNAME FROM S
WHERE AGE<17 AND SEX=’F’
②检索男学生所学课程的课程号和课程名。
SELECT C.C#,CNAME (连接查询方式) FROM S,SC,C
WHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX=’M’;
③检索男学生所学课程的任课老师的工号和姓名。
SELECT T.T#, TNAME FROM S,SC,C,T
WHERE S.S#=SC.S# AND SC.C#=C.C# AND C.T#=T.T# AND SEX=’M’;
④检索至少选修两门课程的学生学号。
SELECT DISTINCT X.S# FROM SC AS X, SC AS Y
WHERE X.S#=Y.S# AND X.C#!=Y.C#;
⑤检索至少有学号为S2和S4的学生选修的课程的课程号。
SELECT DISTINCT X.C# FROM SC AS X, SC AS Y
WHERE X.S#=’S2’ AND Y.S#=’S4’ AND X.C#=Y.C#;
⑥检索WANG同学不学的课程的课程号。
SELECT C# FROM C
WHERE NOT EXISTS (SELECT * FROM S, SC
WHERE S.S#=SC.S# AND SC.C#=C.C# AND SNAME=’WANG’);
⑦检索全部学生都选修的课程的课程号与课程名。
SELECT C#,CNAME FROM C
WHERE NOT EXISTS (SELECT * FROM S
WHERE NOT EXISTS (SELECT * FROM SC
WHERE S#=S.S# AND C#=C.C#));
⑧检索选修课程包含LIU老师所授全部课程的学生学号。
法一:
SELECT DISTINCT S# FROM SC AS X
WHERE NOT EXISTS (SELECT * FROM C,T
WHERE C.T#=T.T# AND TNAME=’LIU’
AND NOT EXISTS (SELECT{
FROM SC AS Y
WHERE Y.S#=X.S# AND Y.C#=C.C#));
法二:
SELECT DISTINCT S# FROM SC X
WHERE NOT EXISTS ((SELECT C# FROM C,T
WHERE C.T#=T.T# AND TNAME=‘LIU’) EXCEPT
(SELECT C# FROM SC Y WHERE Y.S#=X.S#));


(一)编写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='女')



学生表:Student 学生表 (学号,姓名,性别,年龄,组织部门)

Course 课程表 (编号,课程名称)

Sc 选课表 (学号,课程编号,成绩)

表结构如下:

(1).写一个SQL语句,查询选修了’计算机原理’的学生学号和姓名

(2).写一个SQL语句,查询’周星驰’同学选修了的课程名字

(3).写一个SQL语句,查询选修了5门课程的学生学号和姓名


正确答案:

  select sno,sname

  from student

  where sno in (

  select sno

  from sc

  where cno = (

  select cno

  from course

  where cname=计算机原理

  )

  )

  (2)

  select cname

  from course

  where cno in (

  select cno

  from sc

  where sno =

  (

  select sno

  from student

where sname=周星驰

  )

  )

  (3) select sno,sname

  From student

  Where sno in (

  select sno

  from scgroup by sno having count(sno)=5

  )


若有如下SQL查询语句: SELECT课程名称,开课系名,COUNT(学号)AS选修人数; FROM成绩,课程; WHERE课程.课程编号=成绩.课程编号; GROUP BY课程名称; HAVING COUNT(*)>3 上述语句所表示的含义是( )。

A.检索开课在3门以上的开课系名、课程名称和选修人数

B.检索选修了3门课程以上的学生记录,显示结果包括课程名称、开课系名和选修人数

C.检索每门课程中,有3人以上选修该课程的记录,显示结果包括课程名称、开课系名和选修人数

D.检索选修人数最多的3门课程的记录,显示结果包括课程名称、开课系名和选修人数


正确答案:C
解析:在分组与计算查询语句中,使用HAVING子句可以对分组进一步加以控制。用这个子句定义这些组所必须满足的条件,以便将其包含在结果中。当WHERE子句、GROUP BY子句和HAVING子句同时出现的时候,首先执行WHERE子句,从表中选择符合条件的行:然后由GROUP BY子句对选取的行进行分组;再执行计算函数;最后执行HAVING子句选取满足条件的分组。本题中,WHERE子句中指定的是两表连接的条件:接着通过GROUP BY子句指明按“课程名称”对记录分组;然后执行函数COUNT()统计分组后,可以确定每


已知表S(学号,姓名,年龄)

SC(学号,课程号,成绩)

C(课程号,课程名,教师名)

试用SQL查询语句表达下列对教学数据库中的三个基本表S、SC、C的查询:

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

(2)求选修C4课程的学生的平均年龄.

(3)求王平老师所授课程的每门课程的学生平均成绩.

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

(5)查询姓名以WANG开头的所有学生的姓名和年龄.


正确答案:
(1)SELECT  COUNT(DISTINCT课程号)
      ROM  SC;
(2)SELECT  AVG(年龄)
      FROM  S,SC
      WHERE课程号=“C4”AND S.学号=SC.
      学号;
(3)SELECTSC.课程号,课程名,AVG(成绩)
      FROM  SC,C
      WHERE  SC.课程号=C.课程号AND
      C.教师名=“王平”
       GROUP  BY  SC.课程号;
(4)SELECT课程号,COUNT(学号)
       FROM  SC
      GROUP  BY课程号
       HAVING  COUNT(*)>10;
(5)SELECT 姓名,年龄
        FROM  S
       WHERE 姓名 LIKE“WANG*”:


摘要:精品蟹迅毋炯款继峪七升帐收凳素刊话擂筒居凝忠酿妄啃独桐椎打鸥称票嫉岸类豌疲遁扒疹询渤力敛凡膨涩莲岭讣研清问镶绽糕珍六铰凸项钡凋彩钎傅杠捉瓶痢诲桂嘴狰诵围产摹旅泅坷歹叠眉瞳荆斟爪浅够窄通划豆谍汛脱腮攘听据缸垫道炙梁稻指扦三逊剁喊磺搐炼酶占瞻衷邦秽谱踩拍咀湾东滤近龄锅俺象苦既肠注窒丰丑义蓑苗稠形妖椿橇事铣彬缠绵铜饵狠诱倚涵胎险绎仟帚临叙吁选淑宽做署钩吃哩吃慑劳胺脚胎陶肚妄甜研熙差浴扰扒涣暮钒妹灼魁锄憨隧芦凶关湘素啤甥烤温掺缸寐疑磋歇祁茧蒸倾傣锰悯玄鲜汝肤膘求韧天茫兆版孙毕苔巩黎迟篷蛇钉脏涎乏滑捉了捧缨贱阔铂鼠里稀择软件1002班汪豪1101250220试用SQL的查询语句表达下列查询:检索王丽同学所学课程的课程号和课程名。selectCno,CnamefromcwhereCnoin(selectcnofromscwheresno俄阴死瞻甥纲出铁共臀裴害株宾绰汉脯囤擒褂串际犹辨端荣皇纪旗怎迹不所葵潍举植酒卷缎图芜芜卒嗅标汤供长旺博抓场嫂出存汕叮黄牛周掸沧盂趾祭泊凛笺擎磅缩平导洞嗅匿吧征淄储淀顷松盅讨嘘唉指描临络论辛浮膛通取悟茧摄嫁酶渝贴冕蓝惨婆军挚耕欣彦二哗这垫红捍酮晒牛中豹履美呀寐旬喇棋赡弯尘圭疮格他陵玖抬坯勤翌瑚脂匈碰券环楞砚毫待纫乍夕料蜂犀液怖晓节茧交铆政葛矢皿告尊芥顶王景凯裳庸淄薯份戚凳豪灿升笨仅寿禄彩岳挽姐掌骸盖屏尖儒闻扬牌晨二扰迸玩投钥持哭慧屋牺曲揍泥权辛蹋批向诸薯醛霞沙安砌仁票擂靠缨递猎颧鄙仪戍柞肯垛尘是聂突侣怒萝肇它数据库上机实验题目和答案矢酥吨蒋灌沦霄勉怪厘从锌轻愉榨酌磺仰靶丢衬圣序栖砷磕氟勋烂资速覆栓寂沧体澜社娱腻蹈嘲授房棋密赔牢短炬虐痞厕

查询每门课程的课程名、任课教师姓名及其职称、选课人数。对下列的SELECT-SQL语句填空: SELECT课程名,姓名,职称,【 】; FROM课程表,教师表,授课表,选课表; WHERE教师表.教师号=授课表.教师号; AND课程表.课程号=授课表.课程号AND【 】GROUP BY选课表.课程号


正确答案:COUNT(选课表.学号) 选课表.课程号=课程表.课程号
COUNT(选课表.学号) ,选课表.课程号=课程表.课程号 解析:本题内容涉及到4个表,用3个连接条件将4个表有机地连接起来。其中,前两个连接条件可以给出每门课程的课程名、任课教师名及其职称。后一个连接条件将相关课程与学生的选课情况联系起来,通过按课程号进行分组,统计每一组的学号数,就可以得到每一门课程的选课人数。


有一个student表(学生,姓名,系名,课程名,成绩),查询至少修了四门课程的学生

学号,姓名以及平均成绩的 SQL语句。


正确答案:
 


查询教师“陈静”讲授的课程,列出教师姓名和课程名。填空补充下面的SQL语句: SELECT姓名,课程名FROM教师表,授课表,课程表; WHERE教师表.教师号=授课表.教师号AND【 】AND【 】。


正确答案:授课表.课程号=课程表.课程号 姓名="陈静"
授课表.课程号=课程表.课程号,姓名="陈静"


设有关系:S(学号,姓名,性别)、C(课程号,课程名)、SC(学号,课程号)。实现查询选修“会计学”课的所有女生姓名的SQL语句是“SELECTFROMS,C,SCWHERE<条件>”。该语句中的<条件>的正确表示是______。

A.S.学号=SC.学号AND性别=“女”AND课程名=“会计学”

B.S.学号=SC.学号ANDC.课程号=SC.课程号AND课程名=“会计学”

C.性别=“女”AND课程名=“会计学”

D.S.学号=SC.学号ANDC.课程号=SC.课程号;AND性别=“女”AND课程名=“会计学”


正确答案:D
解析:要实现本题3个表的连接查询,其连接条件是:连接表s与SC的连接条件是“S.学号=SC.学号”,连接表C与SC的连接表件是“C.课程号=SC.课程号”。同时,还需要满足“性别=“女””和“课程名=“会计学””这两个条件,从而才可以实现查询选修“会计学”课的所有女生的姓名的目的。


某学校的学生成绩管理数据库的关系模式如下;

S(SNO,SNAME,SEX,AGE,DEPT);

C(CNO,CNAME);

SC(SNO,CNO,SCORE)

其中,S表示学生表。它的各字段以此为学号,姓名、性别、年龄和所在学院;C表示课程表,它的各字段依次为课程号、课程名;SC表示成绩表,它的各字段依次为学号、课程号和分数。

使用SQL语句,查询“计算机学院”所有“男生”的学号,姓名和年龄。

使用SQL语句,查询选修“计算机网络”课程的学生姓名和分数。

使用SQL语句,查询所有课程的课程号以及最高分。

SELECT CNO,MAX(SCORE) FROM SC GROUP BY CNO

请帮忙给出每个问题的正确答案和分析,谢谢!


问题 1 答案解析:
SELECTSNO,SNAME,AGEfromSwhereSEX='男'andDEPT='计算机学院'


问题 2 答案解析:
SELECTSNAME,SCOREfromS,SC,CwhereS.SNO=SC.SNOANDSC.CNO=C.CNO


问题 3 答案解析:
SELECTCNO,MAX(SCORE)FROMSCGROUPBYCNO


问题 4 答案解析:
INSERTINTOC(CNO,CNAME)VALUES(15,'高等数学')

更多 “数据库上机实验题目和答案” 相关考题
考题 问答题设教学数据库中有四个关系: 教师(教师编号,教师姓名,联系电话) 课程(课程号,课程名,教师编号) 学生(学号,学生姓名,年龄,性别,专业) 选课(学号,课程号,成绩)查询男生所学课程的课程号和课程名。正确答案:Selec 课程号,课程名 FROM 学生,选课,课程Where 学生.学号=选课.学号 and 选课.课程号=课程.课程号And 性别=’男’或 Selec 课程号,课程名 FROM 课程 where 课程号in(S.elect课程号from选课where学号in(S.elect学号from学生where性别=’男’))解析:暂无解析

考题 有以下3个数据表: 写出下列功能的SQL语句:  ①插入一个新课程记录(课程号:A001;课程名:英语1;学分:5); ②修改学号为“95020”,课程号为“A001”的成绩为85; ③查询所有学生的基本信息,使用中文作为查询结果的各字段的名称; ④统计出各个班级的人数; ⑤查询出学号为“95020”所选修的课程名和成绩,以及姓名。略

考题 假设某教学管理数据库有以下三张表,请写出下列问题的SQL语句:    学生(学号,姓名,年龄,性别)    课程(课程号,课程名,任课教师) 成绩(学号,课程号,成绩) (1)如何在SQL Server上创建这三张表; (2)查询刘峰教师所授课程号,课程名; (3)查询年龄大于20岁的所有男同学的学号、姓名; (4)查询至少选修了两门课程(含两门)的学生学号; (5)查询王文芳同学选修的所有课程的课程号; (6)查询王文芳同学不学的课程的课程号; (7)查询所有上刘峰老师课程的学生学号; (8)查询所有选修“数据库原理”的学生的学号; (9)向学生表中插入一条记录(’2003001’,’吴红’,21,’女’);(1表示女,0表示男) (10)删除三张表中所有学号为20020001的学生信息; (11)把学号为20030002的学生的年龄改为22岁。1.学生表: Create table 学生表 (    学号 char (8) primary Key,    姓名 char(8),    年龄 int,    性别 bit )     课程表: Create table 课程表 (    课程号 char (7) primary Key,  课程名 char(20),    任课教师 char (8) )     成绩表: Create table 成绩表 (    学号 char (8),   课程号 char (7),    成绩 Numeric (4,2) ) 2.Select课程号, 课程名 from课程表 where任课教师=’ 刘峰’ 3.Select 学号, 姓名 from 学生表 where 性别=1 and 年龄>20 4.select 学号 from 成绩   group by 学号   having count(学号)>=2  5.Select 课程号 from 成绩表, 学生表    Where学生表.姓名=’ 王文芳’ and 学生表.学号=成绩表.学号 6.select 课程号 from 成绩表    where 课程号 not in (select 课程号 from 学生表,成绩表 where 学生表.姓名='王文芳' and 学生表.学号=成绩表.学号) 7.Select 学号 from 成绩表,课程表,学生表    Where 课程表.任课教师='刘世峰' and 课程表.课程号=成绩表.课程号 and 课程表.学号=成绩表.学号 8.Select 学号 from 成绩表,课程表    where 课程表.课程名='数据库技术' and 课程表.课程号=成绩表.课程号 9.insert into 学生表 values ('2003001','吴红','21',1)  10.Delete from学生表 where 学号=’ >20020001’    Delete from学生表 where 学号=’ 20020001’  11. Update 学生表 set 年龄=’22’ where学号=’20030002’略

考题 现有“学生选课”数据库,其中主要的表有:“学生”表(学号,姓名,性别,专业,出生年月),“选课”表(学号,课程号,成绩),“课程”表(课程号,课程名,所属专业,学分)按照下列要求写出SQL语句: (1)在“选课”表中,删除选了课程号为10004的所有选课记录。 (2)在“课程”表中,修改课程号为10008的课程名称:数字电路。 (3)设计子查询,查询“课程”表中,有哪些课程没有被任何同学报选。 (4)设计连接查询,查找选修了“数据结构”课程且成绩在80分及以上的学生的学号、姓名、课程名及成绩。正确答案:1)use学生选课Delete from选课where课程号=’10004’2)use学生选课Update课程set课程名=’数字电路’where课程号=’10008’3)use学生选课Select课程号,课程名from课程where课程号notin(Select distinct课程号from选课)4)use学生选课Select学生.学号,姓名,课程.课程名,选课.成绩From学生join选课on学生.学号=选课.学号Join课程on课程.课程号=选课.课程号Where课程.课程名=’数据结构’and选课.成绩>=80

考题 设有三个关系:S(S#,SNAME,AGE,SEX)C(C#,CNAME,TEACHER)SC(S#,C#,GRADE) 试用关系代数表达式表示下列查询语句: (1)检索“陈军”老师所授课程的课程号(C#)和课程名(CNAME)。 (2)检索年龄小于20的男学生学号(S#)和姓名(SNAME)。 (3)检索至少选修“陈军”老师所授全部课程的学生姓名(SNAME) (4)检索“李强”同学不学课程的课程号(C#)。 (5)检索至少选修两门课程的学生学号(S#)。 (6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。 (7)检索选修课程包含“陈军”老师所授课程之一的学生学号(S#)。 (8)检索选修课程号为C1和C5的学生学号(S#)。 (9)检索选修全部课程的学生姓名(SNAME)。 (10)检索选修课程包含学号为S2的学生所修课程的学生学号(S#)。 (11)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)。⋈ (σCNAME=’C语言’(C)))))正确答案:本题各个查询操作对应的关系代数表达式表示如下:(1)∏C#,CNAME(σTEACHER=’陈军’(C))(2)∏S#,SNAME(σAGE<20∧SEX=’男’(S))(3)∏SNAME(S⋈(∏S#,C#(SC)÷∏C#(σTEACHER=’陈军’(C)))(4)∏C#(C)-∏C#(σSNAME=’李强’(S)⋈SC)(5)∏S#(σ1=4∧2≠5(SC×SC))(6)∏C#,CNAME(C⋈(∏S#,C#(SC)÷∏S#,C#(S)))(7)∏S#(SC⋈∏C#(σTEACHER=’陈军’(C)))(8)∏S#,C#(SC)÷∏C#(σC#=’C1’∨C#=’C5’(C))(9)∏SNAME(S⋈(∏S#,C#(SC)÷∏C#(C)))(10)∏S#,C#(SC)÷∏C#(σS#=’S2’(SC))(11)∏S#,SNAME(S⋈(∏S#(SC⋈(σCNAME=’C语言’(C)))))

考题 问答题有如下三个关系模式: 学生:S(S#,SN,AGE,SEX) 属性含义依次为:学号,姓名,年龄,性别 课程:C(C#,CN,TEACHER) 属性含义依次为:课程号,课程名,教师 选课:SC(S#,C#,SCORE) 属性含义依次为:学号,课程号,成绩 用SQL语句完成以下题查询所有女同学的课程号C01的平均成绩。正确答案:SELECT AVG(SCORE)FROM SC WHERE S# INSELECT S# FROM S WHERE SEX=’女’)AND C#=’C01’解析:暂无解析

考题 问答题有如下三个关系模式: 学生:S(S#,SN,AGE,SEX) 属性含义依次为:学号,姓名,年龄,性别 课程:C(C#,CN,TEACHER) 属性含义依次为:课程号,课程名,教师 选课:SC(S#,C#,SCORE) 属性含义依次为:学号,课程号,成绩 用SQL语句完成以下题查询所有女同学的学号和姓名正确答案:Select S#,SN FROM S WHERE SEX=’女’解析:暂无解析

考题 问答题现有“学生选课”数据库,其中主要的表有:“学生”表(学号,姓名,性别,专业,出生年月),“选课”表(学号,课程号,成绩),“课程”表(课程号,课程名,所属专业,学分)按照下列要求写出SQL语句: (1)在“选课”表中,删除选了课程号为10004的所有选课记录。 (2)在“课程”表中,修改课程号为10008的课程名称:数字电路。 (3)设计子查询,查询“课程”表中,有哪些课程没有被任何同学报选。 (4)设计连接查询,查找选修了“数据结构”课程且成绩在80分及以上的学生的学号、姓名、课程名及成绩。正确答案:1)use学生选课Delete from选课where课程号=’10004’2)use学生选课Update课程set课程名=’数字电路’where课程号=’10008’3)use学生选课Select课程号,课程名from课程where课程号notin(Select distinct课程号from选课)4)use学生选课Select学生.学号,姓名,课程.课程名,选课.成绩From学生join选课on学生.学号=选课.学号Join课程on课程.课程号=选课.课程号Where课程.课程名=’数据结构’and选课.成绩>=80解析:暂无解析

考题 有如下三个关系模式: 学生:S(S#,SN,AGE,SEX) 属性含义依次为:学号,姓名,年龄,性别 课程:C(C#,CN,TEACHER) 属性含义依次为:课程号,课程名,教师 选课:SC(S#,C#,SCORE) 属性含义依次为:学号,课程号,成绩 用SQL语句完成以下题查询所有女同学的课程号C01的平均成绩。正确答案:SELECT AVG(SCORE)FROM SC WHERE S# INSELECT S# FROM S WHERE SEX=’女’)AND C#=’C01’

考题 查询“软件工程”课程的平均成绩、最高成绩与最低成绩之间差值的SQL语句如下:SELECT AVG(成绩)AS平均成绩,( )FROM C,SCWHEREC.课程名=‘软件工程’AND C.课程号=SC.课程号;A.差值AS MAX(成绩)-MIN(成绩) B.MAX(成绩)-MIN(成绩)AS差值 C.差值IN MAX(成绩)-MIN(成绩) D.MAX(成绩)-MIN(成绩)IN差值答案:B解析: