MySQL实验四:数据更新
MySQL实验四:数据更新
目录
- MySQL实验四:数据更新
- 导读
- 表结构
- sql建表语句
- 模型图
- 1、 SQL更新:将所有学生的年龄增加1岁
- 代码
- 2、SQL更新:修改“高等数学”课程倒数三名成绩,在原来分数上减5分
- 代码
- 解析
- 3、SQl更新:将所有平均分为75分以上的学生的各门课成绩在原来基础上加5分
- 代码
- 解析
- 4、SQL更新:修改“王大力”的“计算机导论”课程成绩为70
- 代码
- 解析
- 5、SQL更新:修改“9512101”的“C01”课程成绩为85
- 代码
- 6、SQL插入:在学生表Student中插入数据
- 代码
- 7、SQL删除:删除“数据库基础”的全部记录(包括课程信息,成绩信息)
- 代码
- 8、SQL插入:在课程表Course中插入数据
- 代码
- 9、SQl删除:删除“张海”的所有成绩记录
- 代码
- 10、SQL插入:在选课表SC中插入95211班学生选修C04的选课信息
- 代码
- 11、SQL删除:删除“9531102”学生“C05”课程的成绩记录
- 代码
- 12、根据employee表中各部门的员工数,更新department表的各对应部门人数
- 题目
- 代码
- 解析

导读
本期实验,我们将讲解数据更新的一些sql语句的练习题,所有题目的表结构基于下述,与sql语句与模型图一并给出。
表结构
学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:
1、student(学生表):
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course(课程表)
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc(选课表)
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
sql建表语句
-- 创建学生表
CREATE TABLE student (SNO CHAR(7) PRIMARY KEY,SNAME CHAR(10) NOT NULL,SSEX CHAR(2),SAGE SMALLINT,SDEPT VARCHAR(20)
);-- 创建课程表
CREATE TABLE course (CNO CHAR(10) PRIMARY KEY,CNAME VARCHAR(20) NOT NULL,CCREDIT SMALLINT,SEMSTER SMALLINT,PERIOD SMALLINT
);-- 创建选课表
CREATE TABLE sc (SNO CHAR(7),CNO CHAR(10),GRADE SMALLINT,PRIMARY KEY (SNO, CNO),FOREIGN KEY (SNO) REFERENCES student(SNO),FOREIGN KEY (CNO) REFERENCES course(CNO)
);
模型图

1、 SQL更新:将所有学生的年龄增加1岁
代码
update student set sage=sage+1;
2、SQL更新:修改“高等数学”课程倒数三名成绩,在原来分数上减5分
代码
UPDATE sc
SET sc.grade = sc.grade-5
where cno in(select cno from course where cname='高等数学') and grade is not null
order by grade
limit 3;
解析
UPDATE sc表示要更新选课表 sc 中的数据。SET sc.grade = sc.grade-5表示将选课表 sc 中所有符合条件的记录中的成绩减去 5 分。where cno in(select cno from course where cname='高等数学') and grade is not null表示只更新选修了课程名为“高等数学”的课程且成绩不为空的学生的选课记录。其中,cno in(select cno from course where cname='高等数学')表示选修了课程名为“高等数学”的课程,grade is not null表示成绩不为空。order by grade表示按成绩升序排序。limit 3表示最多更新 3 条记录。如果符合条件的记录多于 3 条,则只更新前三条记录。
3、SQl更新:将所有平均分为75分以上的学生的各门课成绩在原来基础上加5分
代码
UPDATE sc
SET GRADE = GRADE + 5
WHERE SNO IN (
SELECT t.SNO
FROM (
SELECT SNO, AVG(GRADE) AS AVG_GRADE
FROM sc
GROUP BY SNO
HAVING AVG_GRADE >= 75
) AS t
);
解析
在这条 SQL 语句的子查询中,使用了别名 t 来代表子查询的结果集。这样做的好处是,可以在 SELECT 子句中引用这个别名,从而简化 SQL 语句的书写。
在这个例子中,子查询的目的是找出平均成绩大于等于 75 分的学生的学号。因此,子查询的结果需要包含两个字段:SNO(学号)和 AVG_GRADE(平均成绩)。在子查询中,使用了 GROUP BY 子句对 SNO 进行分组,并使用 AVG 函数计算每个学生的平均成绩。由于 AVG 函数返回的结果需要命名为 AVG_GRADE,因此使用了 AS 关键字来给这个字段起别名。
4、SQL更新:修改“王大力”的“计算机导论”课程成绩为70
代码
UPDATE sc
SET GRADE = 70
WHERE SNO = (
SELECT SNO
FROM student
WHERE SNAME = '王大力') AND CNO = (
SELECT CNO
FROM course
WHERE CNAME = '计算机导论'
);
解析
- UPDATE sc 表示要更新选课表 sc 中的数据。
- SET GRADE = 70 表示将选课表 sc 中符合条件的记录的成绩设置为 70 分。
WHERE SNO = (SELECT SNO FROM student WHERE SNAME = '王大力') AND CNO = (SELECT CNO FROM course WHERE CNAME = '计算机导论')表示只更新某个学生选修的某一门课程的成绩。其中,SELECT SNO FROM student WHERE SNAME = '王大力'是一个子查询,用于查找名为“王大力”的学生的学号。同样地,SELECT CNO FROM course WHERE CNAME = '计算机导论'也是一个子查询,用于查找课程名为“计算机导论”的课程的课程号。因此,WHERE 子句中的条件SNO = (SELECT SNO FROM student WHERE SNAME = '王大力') AND CNO = (SELECT CNO FROM course WHERE CNAME = '计算机导论')表示选取符合条件的学生和课程的选课记录进行更新。
5、SQL更新:修改“9512101”的“C01”课程成绩为85
代码
update sc
set grade = 85
where sno='9512101' and cno='C01';
6、SQL插入:在学生表Student中插入数据
Sno:9512102 Sname:刘晨 Ssex:男 Sage:20 Sdept:计算机系
表结构如下:student(学生表)
| 列名 | 说明 | 数据类型 | 约束 |
| SNO | 学号 | CHAR(7) | 主码 |
| SNAME | 姓名 | CHAR(10) | NOT NULL |
| SSEX | 性别 | CHAR(2) | 取“男”或“女” |
| SAGE | 年龄 | SMALLINT | |
| SDEPT | 所在系 | VARCHAR(20) | 默认“计算机系” |
代码
INSERT INTO student (SNO, SNAME, SSEX, SAGE, SDEPT)
VALUES ('9512102', '刘晨', '男', 20, '计算机系');
7、SQL删除:删除“数据库基础”的全部记录(包括课程信息,成绩信息)
代码
delete from sc where cno in(select cno from course where cname='数据库基础' );
delete from course where cname='数据库基础';
8、SQL插入:在课程表Course中插入数据
Cno:C06 Cname:数据结构 Ccredit:5 Semster:4
表结构如下:course(课程表)
| 列名 | 说明 | 数据类型 | 约束 |
| CNO | 课程号 | CHAR(10) | 主码 |
| CNAME | 课程名 | VARCHAR(20) | NOT NULL |
| CCREDIT | 学分 | SMALLINT | |
| SEMSTER | 学期 | SMALLINT | |
| PERIOD | 学时 | SMALLINT |
代码
insert into course (cno,cname,ccredit,semster)
values ('C06','数据结构',5,4);
9、SQl删除:删除“张海”的所有成绩记录
代码
DELETE FROM sc
WHERE sno IN(SELECT sno FROM student WHERE sname='张海');
10、SQL插入:在选课表SC中插入95211班学生选修C04的选课信息
代码
INSERT INTO sc(sno,cno)
SELECT sno,cno FROM student,course
WHERE sno LIKE '95211%' and cno='C04';
11、SQL删除:删除“9531102”学生“C05”课程的成绩记录
代码
DELETE FROM sc
WHERE cno='C05' AND sno='9531102';
12、根据employee表中各部门的员工数,更新department表的各对应部门人数
题目
根据employee员工表中各部门的员工数,更新department部门表的各对应部门人数。
员工表employee表结构如下:


代码
update department,(select dept_id,count(*) as snum from employee group by dept_id)as num1
set emp_num = snum
where num1.dept_id = department.dept_id;
解析
-
UPDATE department, (select dept_id,count() as snum from employee group by dept_id) as num1表示要更新部门表 department 中的数据,并使用子查询(select dept_id,count() as snum from employee group by dept_id) as num1来获取每个部门的员工人数信息。 -
set emp_num = snum表示将部门表 department 中的 emp_num 字段设置为子查询 num1 中的 snum 字段,即将每个部门的员工人数信息更新到部门表中。 -
where num1.dept_id = department.dept_id表示将子查询 num1 的结果与部门表 department 进行关联,只更新那些部门的员工人数信息,其部门编号在子查询 num1 中也存在。综上所述,这条 SQL 语句的作用是将每个部门的员工人数信息更新到部门表 department 中。子查询 num1 用于计算每个部门的员工人数并将结果存储在一个临时表 num1 中。在主查询中,使用 num1 表来获取每个部门的员工人数信息,并将其更新到部门表的 emp_num 字段中。WHERE 子句中的条件用于将临时表 num1 的结果与部门表 department 进行关联,只更新那些部门的员工人数信息,其部门编号在临时表 num1 中也存在。

相关文章:
MySQL实验四:数据更新
MySQL实验四:数据更新 目录MySQL实验四:数据更新导读表结构sql建表语句模型图1、 SQL更新:将所有学生的年龄增加1岁代码2、SQL更新:修改“高等数学”课程倒数三名成绩,在原来分数上减5分代码解析3、SQl更新:…...
商汤科技推出“日日新SenseNova”,大模型体系赋能人工智能新未来
2023年4月10日,商汤科技SenseTime技术交流日活动在上海举行,分享了以“大模型大算力”推进AGI(通用人工智能)发展的战略布局,并公布了商汤在该战略下的“日日新SenseNova”大模型体系。 公开信息显示,商汤科…...
【中创AI】斯坦福人工智能年度报告:AI论文发表量中国世界第一!
斯坦福以人为本人工智能研究所 (HAI) 发布了最新一期的 2023 AI 指数 (2023 AI Index) 报告,探讨了过去一年机器学习的发展。 (斯坦福HAI于2019年初成立,致力于研究新的AI方法,并研究该技术对社会的影响。其每年发布一份AI指数报…...
Java基础(五)面向对象编程(基础)
学习面向对象内容的三条主线 Java类及类的成员:(重点)属性、方法、构造器;(熟悉)代码块、内部类面向对象的特征:封装、继承、多态、(抽象)其他关键字的使用:…...
寻找CSDN平行世界的另一个你
本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 寻找CSDN平行世界的另一个你摘要前言列表测试目的摘要 本文作了一个测试,看看在 CSDN 的博文中,艾特()某个好友,TA是否能够…...
ChatGPT的发展对客户支持能提供什么帮助?
多数组织认为客户服务是一种开销,实际上还可以将客户服务看成是一种机会。它可以让你在销售后继续推动客户的价值。成功的企业深知,客户服务不仅可以留住客户,还可以增加企业收入。客户服务是被低估的手段,它可以通过推荐、见证和…...
数据安全评估体系建设
数据安全评估是指对重要数据、个人信息等数据资产的价值与权益、合规性、威胁、脆弱性、防护等进行分析和判断,以评估数据安全事件发生的概率和可能造成的损失,并采取相应的措施和建议。 数据安全评估的重要性和背景 1.国家法律法规下的合规需要 目前数…...
论文阅读 - ANEMONE: Graph Anomaly Detection with Multi-Scale Contrastive Learning
目录 摘要 1 简介 2 问题陈述 3 PROPOSED ANEMONE FRAMEWORK 3.1 多尺度对比学习模型 3.1.1 增强的自我网络生成 3.1.2 补丁级对比网络 3.1.3 上下文级对比网络 3.1.4 联合训练 3.2 统计异常估计器 4 EXPERIMENTS 4.1 Experimental Setup 4.1.1 Datasets 4.1.2 …...
数据密集型应用存储与检索设计
本文内容翻译自《数据密集型应用系统设计》,豆瓣评分高达 9.7 分。 什么是「数据密集型应用系统」? 当数据(数据量、数据复杂度、数据变化速度)是一个应用的主要挑战,那么可以把这个应用称为数据密集型的。与之相对的是…...
Spring Boot集成Redis实现keyspace监听 | Spring Cloud 34
一、前言 在前面我们通过以下章节对Redis的keyevent(键事件通知)使用有了基础的了解: Spring Boot集成Redis实现keyevent监听 | Spring Cloud 33 现在开始我们正式学习Redis的keyspace(键空间通知),在本…...
如何搭建chatGPT4.0模型-国内如何用chatGPT4.0
国内如何用chatGPT4.0 在国内,目前可以通过以下途径使用 OpenAI 的 ChatGPT 4.0: 自己搭建模型:如果您具备一定的技术能力,可以通过下载预训练模型和相关的开发工具包,自行搭建 ChatGPT 4.0 模型。OpenAI提供了相关的…...
【故障定位】基于多元宇宙算法的主动配电网故障定位方法研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
基于html+css的自适应展示1
准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…...
DolphinDB +Python Airflow 高效实现数据清洗
DolphinDB 作为一款高性能时序数据库,其在实际生产环境中常有数据的清洗、装换以及加载等需求,而对于该如何结构化管理好 ETL 作业,Airflow 提供了一种很好的思路。本篇教程为生产环境中 ETL 实践需求提供了一个解决方案,将 Pytho…...
pip3 升级软件包时遇到超时错误解决方法
如果你在使用 pip3 升级软件包时遇到超时错误,可能是因为下载速度缓慢或网络不稳定。以下是解决方法: 更改 pip3 源:你可以切换到其他 pip3 源,例如清华、阿里等等,以提高下载速度。 pip3 install -i https://pypi.tun…...
Linux环境开机自启动
1.制作服务 在/etc/systemd/system/路径下创建kkFile.service文件 cd /etc/systemd/system/ vim kkFile.service2.写入如下内容 [Unit] DescriptionkkFile service [Service] Typeforking ExecStart/sinosoft/yjya/kkFileView-4.0.0/bin/startup.sh [Install] WantedBymulti…...
字节8年测试经验,送给想要学习自动化测试的同学6条建议
我的职业生涯开始和大多数测试人一样,开始接触都是纯功能界面测试。那时候在一家电商公司做测试,做了有一段时间,熟悉产品的业务流程以及熟练测试工作流程规范之后,效率提高了,工作比较轻松,也得到了更好的…...
快速搭建springboot websocket客户端
一、前言WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽&…...
Python 操作 MongoDB 详解
嗨害大家好鸭!我是芝士❤ 一、前言 MongoDB属于 NoSQL(非关系型数据库), 是一个基于分布式文件存储的开源数据库系统。 二、操作 MongoDB 1. 安装 pymongo python 使用第三方库来连接操作 MongoDB, 所以我们首先安…...
虹科案例 | 丝芙兰xDomo:全球美妆巨头商业智能新玩法
全球美妆行业的佼佼者丝芙兰,其走向成功绝非仅依靠品牌知名度和营销手段。身为数据驱动型企业,2018年以来,丝芙兰就率先在行业内采用虹科提供的Domo商业智能进行数据分析和决策,并首先享受了运营优化、效率提升所带来的商业价值。…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
