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

【数据库】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.lryc.cn/news/432690.html

相关文章:

  • Unity Adressables 使用说明(六)加载(Load) Addressable Assets
  • 视频监控系统布局策略:EasyCVR视频汇聚平台构建高效、全面的安全防线
  • Spark的Web界面
  • 语言中的内联
  • fail to install hcmon driver问题解决
  • 【NumPy】基础知识
  • 传统CV算法——特征匹配算法
  • PyInstaller问题解决 onnxruntime-gpu 使用GPU和CUDA加速模型推理
  • Apache Pig
  • axios返回的是promise对象如何处理?
  • 归并排序/计数排序
  • etcdctl defrag 剔除、添加etcd节点
  • 计算机网络(二) —— 网络编程套接字
  • 二百五十九、Java——采集Kafka数据,解析成一条条数据,写入另一Kafka中(一般JSON)
  • Qt项目使用Inno Setup打包(关于打包中文乱码的解决)
  • HTML和HTML5有什么区别
  • Collections
  • fastreport打印trichedit分页问题的解决
  • 【MeterSphere】vnc连接不上selenium-chrome容器
  • mysql explain分析
  • [论文笔记]Circle Loss: A Unified Perspective of Pair Similarity Optimization
  • Windows .NET8 实现 远程一键部署,几秒完成发布,提高效率 - CICD
  • echarts 水平柱图 科技风
  • 标准IO与系统IO
  • 【conda】Conda 环境迁移指南:如何更改 envs_dirs 和 pkgs_dirs 以及跨盘迁移
  • 脏页写入磁盘的过程详解
  • 数据结构——单链表实现和注释浅解
  • 滑动窗口系列(同向双指针)/9.7
  • C# 窗体中Control以及Invalidate,Update,Refresh三种重绘方法的区别
  • 缓存类型以及读写策略