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