SQL上机试题1.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL上机试题1

一、(12分)问题描述:已知关系模式: S (SNO,SNAME)????????? 学生关系。SNO 为学号,SNAME 为姓名 C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师 SC(SNO,CNO,SCGRADE)???? 选课关系。SCGRADE 为成绩 1. 找出没有选修过“李明”老师讲授课程的所有学生姓名(4分) 2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩(4分) 3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名(4分)三、活期存款中,“储户”通过“存取款单”和“储蓄所”发生联系。假定储户包括:账号,姓名,电话,地址,存款额;“储蓄所”包括:储蓄所编号,名称,电话,地址(假定一个储户可以在不同得储蓄所存取款) 1、写出设计以上表格的语句(4分) 2、创建一个触发器TR1完成下面内容: 当向“存取款单”表中插入数据时,如果存取标志=1则应该更改储户表让存款额加上存取金额,如果存取标志=0则应该更改储户表让存款额减去存取金额,如果余额不足显示余额不足错误。(5分) create table s(sno int,sName varchar(100)) create table c(cno int,cName varchar(100),CTEACHER varchar(100)) create table sc(sno int,cno int,scGrade int) insert into s values(1,lfm1) insert into s values(2,lfm2) insert into s values(3,lfm3) insert into s values(4,lfm4) insert into s values(5,lfm5) insert into s values(6,lfm6) insert into c values(1,ch1,李明) insert into c values(2,ch2,王刚) insert into c values(3,ch3,ll) insert into c values(4,ch4,ff) insert into c values(5,ch5,ffd) insert into c values(6,ch6,se) insert into c values(7,ch7,s) insert into sc values(1,2,80) insert into sc values(2,2,50) insert into sc values(1,1,60) insert into sc values(1,3,90) insert into sc values(3,2,55) insert into sc values(1,6,77) insert into sc values(3,4,80) insert into sc values(4,2,70) 1. 找出没有选修过“李明”老师讲授课程的所有学生姓名 --实现代码: SELECT SNAME FROM S WHERE sname NOT in( ??? SELECT sname FROM SC,C,S ??? WHERE SC.CNO=C.CNO ??????? AND cteacher=李明 ??????? AND S.SNO = SC.SNO) select sname from s where sno not in (select s.sno from s inner join sc on sc.sno=s.sno inner join c on c.cno=sc.cno where cteacher=李明) 2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩 --实现代码: SELECT S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE) FROM S,SC,( ??? SELECT SNO ??? FROM SC ??? WHERE SCGRADE60 ??? GROUP BY SNO ??? HAVING COUNT(DISTINCT CNO)=1 )A WHERE S.SNO=A.SNO AND SC.SNO=A.SNO GROUP BY S.SNO,S.SNAME select s.sno,s.sname , avg(scGrade) as avg_scgrade from s,sc where s.sno in( select sc.sno from sc inner join c on c.cno=sc.cno where sc.scGra

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档