当前位置: 首页 > news >正文

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;

解析

  1. UPDATE sc 表示要更新选课表 sc 中的数据。
  2. SET sc.grade = sc.grade-5 表示将选课表 sc 中所有符合条件的记录中的成绩减去 5 分。
  3. 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 表示成绩不为空。
  4. order by grade 表示按成绩升序排序。
  5. 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 = '计算机导论'
);

解析

  1. UPDATE sc 表示要更新选课表 sc 中的数据。
  2. SET GRADE = 70 表示将选课表 sc 中符合条件的记录的成绩设置为 70 分。
  3. 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;

解析

  1. 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 来获取每个部门的员工人数信息。

  2. set emp_num = snum 表示将部门表 department 中的 emp_num 字段设置为子查询 num1 中的 snum 字段,即将每个部门的员工人数信息更新到部门表中。

  3. 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更新&#xff1a…...

商汤科技推出“日日新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商业智能进行数据分析和决策,并首先享受了运营优化、效率提升所带来的商业价值。…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...