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

【数据库】MySQL表的Updata(更新)和Delete(删除)操作

目录

1.Update

案例1:将孙悟空同学的数学成绩变更为 80 分

 案例2:将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

案例3:将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

案例4:将所有同学的语文成绩更新为原来的 2 倍

2.Delete

 案例1:删除孙悟空同学的考试成绩

 案例2:删除整张表

3.截断表


在了解操作之前我们先创建出一个用于案例的表。

CREATE TABLE exam_result ( 
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, 
name VARCHAR(20) NOT NULL COMMENT '同学姓名', 
chinese float DEFAULT 0.0 COMMENT '语文成绩', 
math float DEFAULT 0.0 COMMENT '数学成绩', 
english float DEFAULT 0.0 COMMENT '英语成绩' 
);

 再向表中插入数据,语句都是我们之前接触过的。

INSERT INTO exam_result (name, chinese, math, english) VALUES 
('唐三藏', 67, 98, 56), 
('孙悟空', 87, 78, 77), 
('猪悟能', 88, 98, 90), 
('曹孟德', 82, 84, 67), 
('刘玄德', 55, 85, 45), 
('孙权', 70, 73, 78), 
('宋公明', 75, 65, 30);

1.Update

案例1:将孙悟空同学的数学成绩变更为 80 分

首先我们先查看所有人的数学分数,可以看到孙悟空的数学成绩为78。 

然后使用update来更新分数为80;

update exam_result set math=80 where name ='孙悟空';

可以看到孙悟空的成绩已经更新为80; 

 案例2:将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

 首先我们先筛选出未更新前的成绩

接下来使用update ..set...更新

update  exam_result math set math=60,chinese = 70 where name='曹孟德';

可以看到成绩已经更新为案例要求的分数。

案例3:将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

由于题目的要求非常长2,我们不妨一步一步来。

先筛选出总成绩倒数先前三的同学

select name,math + chinese+english as total from exam_result order by total limit 3;

 因为我们不确定再给他们的数学成绩加上三十分之后倒数前三还是不是他们三个人,所以我们先如上操作。

我们再给这几个人的数学成绩加上30分

update exam_result set math=math+30 order by chinese+math+english asc limit 3;

 可以看到在给原先的倒数前三数学成绩加上三十分后,曹孟德现在已经不在倒数前三的位置了。

也就是说我们可以在order by后可以继续对数据进行更改。

案例4:将所有同学的语文成绩更新为原来的 2 倍

先观察没有更新前的语文成绩

对其更新

update exam_result set chinese = chinese * 2;

 

注意:这个例子是提醒我们使用时在没有使用where筛选条件的情况下慎用update,不然会使所有的数据进行更新!

2.Delete

 案例1:删除孙悟空同学的考试成绩

 首先查看孙悟空的考试成绩。

再使用delete语句进行删除

delete from exam_result where name = '孙悟空';

再次查询时可以看到孙悟空的考试成绩已经成为了empty。

 案例2:删除整张表

在操作之前我们要明白的是MySQL中的表中的数据是不一样的,delete操作主要是删除表中的数据,表的结构是不受影响的

所以第一步先准备测试用的表

CREATE TABLE for_delete ( 
 id INT PRIMARY KEY AUTO_INCREMENT, 
 name VARCHAR(20) 
);

插入一些数据

INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C'); 

接下来就删除这个表的内容

delete from for_delete

接下来我们继续查看这个表的结构时会发现这个表的结构依然存在

 并且我们再向其中插入数据

可以看到我们之前设置的id为自增长键并不会重置。

3.截断表

同样的再操作案例之前先简单创建一个可以操作的表

CREATE TABLE for_truncate ( 
 id INT PRIMARY KEY AUTO_INCREMENT, 
 name VARCHAR(20) 
); 

插入一些数据

INSERT INTO for_truncate (name) VALUES ('A'), ('B'), ('C');

查看表结构

此时我们对表进行truncate操作

truncate for_truncate;

 再次查看表结构

这次我们可以发现自增长键的计数器已经没有了

我们再向里插入数据:

insert into for_truncate (name) values ('E');

 

可以看到我们的自增长键被重置为1了,而delete操作不会重置,这就是两个操作的区别。


http://www.kler.cn/a/300276.html

相关文章:

  • 【分布式架构设计理论1】架构设计的演进过程
  • CSS语言的数据类型
  • SQL刷题快速入门(三)
  • 前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!
  • C语言练习(17)
  • 【Linux系统编程】—— 从零开始实现一个简单的自定义Shell
  • Spring 框架——@Retryable 注解与 @Recover 注解
  • 【delphi】判断多显示器下,程序在那个显示器中
  • C++day7
  • python 实现gaussian高斯算法
  • Vuex快速入门
  • mysql等相关面试题
  • Sentinel实时监控不展示问题
  • kali2023安装docker
  • SprinBoot+Vue老年医疗保健网站的设计与实现
  • 使用ffmpeg在视频中绘制矩形区域
  • 【重学 MySQL】十八、逻辑运算符的使用
  • CentOS系统上Node.js安装与配置最佳实践
  • IIS 反向代理模块: URL Rewrite 和 Application Request Routing (ARR)
  • Vuex:深入理解所涉及的几个问题
  • [数据集][目标检测]石油泄漏检测数据集VOC+YOLO格式6633张1类别
  • 深入探索嵌入式 Linux
  • 【大模型基础】P2 Bag-of-Words
  • C语言深入理解指针五(18)
  • python测试开发基础---threading
  • 随机数与随机数种子