数据库上机练习

问题描述:

本题目要求编写UPDATE语句, 计算每位学生已获得的总学分并填写在stu表中的totalcredit字段。

其中,总学分为每个学生通过的选修课程的学分数总和,注意:只有在60分以上的选课成绩才能获得该门课程的学分数,每门课程的学分数在cou表中credit字段。

表结构:
请在这里写定义表结构的SQL语句。例如:

CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,`totalcredit` smallint(6) DEFAULT NULL,PRIMARY KEY (`sno`)
);
CREATE TABLE `cou` (`cno` char(4) NOT NULL,`cname` varchar(30) NOT NULL,`credit` smallint(6) DEFAULT NULL,`ptime` char(5) DEFAULT NULL,`teacher` char(10) DEFAULT NULL,PRIMARY KEY (`cno`)
);
CREATE TABLE `sc` (`sno` char(4) NOT NULL,`cno` char(4) NOT NULL,`grade` decimal(6,1) DEFAULT NULL,`rank` char(255) DEFAULT NULL,PRIMARY KEY (`sno`,`cno`),CONSTRAINT `fk_sc_cno` FOREIGN KEY (`cno`) REFERENCES `cou` (`cno`),CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);

表样例
请在这里给出上述表结构对应的表样例。例如


cou表:

sc表:

原因分析:

这个问题解决的关键在于怎么按码,改变相应元组的其他属性,正确的方法是用两张表

update A,B
set A.x=B.x
where A.主码=B.主码

那么现在的问题是如何建立一个含有sum(credit)和sno的新表
代码如下

select sno,sum(credit)
from(select stu.sno sno,case when sc.grade>=60 then credit else NULL end creditfrom stu left outer join sc on stu.sno=sc.sno left outer join cou on sc.cno=cou.cnogroup by stu.sno,credit,grade) a
group by sno

接下来的操作就是两张表的结合了,即可得到正确答案:

正确解答

UPDATE stu,(select sno,sum(credit) SUM
from(select stu.sno sno,case when sc.grade>=60 then credit else NULL end creditfrom stu left outer join sc on stu.sno=sc.sno left outer join cou on sc.cno=cou.cnogroup by stu.sno,credit,grade) a
group by sno) B
SET stu.totalcredit = B.SUM
where stu.sno = B.sno

点个关注吧,求求了,我会努力更新的。(上次的数理统计复习我会陆续上传的)

【SQL练习】 计算并填写学生获得的总学分 本题目要求编写UPDATE语句, 计算每位学生已获得的总学分并填写在stu表中的totalcredit字段。相关推荐

  1. 在mysql中如何建立性别约束_在Access2010数据库中,要在表中建立“性别”字段,并按与要求用逻辑值表示,其数据类型应当是()_学小易找答案...

    [填空题]在Access2010数据库中,表结构的设计和维护是在表的()视图中完成的. [单选题]在Access2010数据库的下列字段类型中,字段大小不固定的是() [单选题]对Access2010 ...

  2. SQL 触发器 当修改TEST表中的F1字段时,同时根据条件修改F2字段

    Code --当外修改TEST表中的F1字段时,同时根据条件修改F2字段 ALTER TRIGGER [dbo].[updatetest1] ON [dbo].[TEST]  FOR INSERT,  ...

  3. mysql 查询指定字段数据_MySQL使用select语句查询指定表中指定列(字段)的数据

    本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...

  4. 修改Mysql表中自增字段的初始值

    修改Mysql表中自增字段的初始值: ALTER TABLE employee AUTO_INCREMENT=2; 解释:将表employee自增字段的初始值设置为2

  5. Sqlserver别太信任SysComments表中的text字段

    1.用SysComments的原因 最近新模块的开发,需要更改和新增的存储过程比较多,为了同步开发环境和测试环境的存储过程,能在更新程序后,马上能整理出更改的存储过程脚本,并更新到测试DB服务器上,我 ...

  6. 查询一个表中所有id字段在另一个表中对应值的SQL语句怎么写?

    编辑器加载中... 查询一个表中所有id字段在另一个表中对应值的SQL语句怎么写?多表联结查询:select rbd.RBDID, rbd.ProductCode,p.ProductCnName,p. ...

  7. WSS 数据库表中的 UserInfo 表中的 tp_SystemId 字段的使用

    在 WSS 的数据库中,UserInfo表的 tp_SystemId 记录的是用户登录验证时需要用到的数据,是此用户在 AD( Active Directory ) 中的 SID( Security ...

  8. mysql怎么修改表中的文字_mysql表中怎么修改字段?

    在mysql表中,可以使用"ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;"语句来修改字段名称:使用"ALTER TABLE 表名 MODIF ...

  9. sql一个表中两个字段合并求和

    sql一个表中两个字段,合并求和 SELECT SUM(字段a+'.'+字段b) as total  from TABLE 转载于:https://www.cnblogs.com/lovewyc131 ...

最新文章

  1. http发送16进制报文_阿里云物联网平台使用心得(25)MQTT协议详解UNSUBSCRIBE报文...
  2. linux关闭沙盒模式,打开或关闭沙盒模式以禁用宏
  3. form data和request payload的区别
  4. SQLServer查询所有表所有字段包含xx的信息
  5. esp8266 at接收数据中断时间_利用ESP8266获取网络同步时间(北京时间)
  6. LINUX SHELL脚本如何判断一个目录下有没有文件
  7. Java小项目 屏幕自定义尺寸GIF生成器V1.0
  8. 如何转换html转化mp4,格式互转技巧:webm格式怎么转换mp4?
  9. 照相机成像原理 数码相机的成像原理
  10. 排队论模型(八):Matlab 生成随机数、排队模型的计算机模拟
  11. Excel 随机生成 算术题
  12. HTML表格合并行和列
  13. 【Spark NLP】第 6 章:信息检索
  14. Mac锁屏 设置快捷键
  15. 微星MS16j9鼠标面板可以移动指针,无法通过面板点击
  16. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译
  17. gred-cam 的tensorflow实现 热力图
  18. html页面标尺,canvas实现标尺.html
  19. JavaScript -- event handler
  20. 跑酷游戏-第13届蓝桥杯Scratch国赛真题第3题

热门文章

  1. 2021-02-01 PMP 群内练习题 - 光环
  2. 2013年软件设计师考试知识结构(三)
  3. sqli-labs系列——第六关
  4. 中兴F660光猫设置命名清单
  5. 设定网页为浏览器首页
  6. wend计算机语言,1.12基本算法语言(第三课时)汇编.ppt
  7. NLP-预训练模型-2020-NLU+NLG:mT5【多国语言版T5】
  8. mac安装旺旺启动台找不到_第一次用 Mac?推荐你先了解这些…
  9. 【今日头条】二阶魔方
  10. ctf攻防世界crypto新手区