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商业智能进行数据分析和决策,并首先享受了运营优化、效率提升所带来的商业价值。…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
