Linux下学【MySQL】表中修改和删除的进阶操作(配实操图和SQL语句通俗易懂)


每日激励:"六年之约正式开始,第一年第一天第一篇博客,也祝大家今年能豪取第一!"
**绪论​:
本章是表操作的进阶的修改和删除篇章(没看过入门的这里是传送门),本章将带你进阶的去学习表的修改update和删除delete,本质也就是学他们后面所带的一些附加条件(具体请看目录),通过这些条件去更好管理你的数据。(全文共3000字,图文并茂 通俗易懂 快开始吧~),后续还将持续更新大量MySQL文件,敬请期待吧 ~

早关注不迷路,话不多说安全带系好,发车啦(建议电脑观看)。**


1. Update更新修改

基本语法:

sql 复制代码
UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] 
[ORDER BY ...] 
[LIMIT ...]

作用:对查询到的结果进行列值更新

预备工作:

创建表结构,后续将在该表上进行操作

1. 筛选条件where的使用

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

若直接使用update写那么所有数学成绩都将改成80(下图,一般都不这样写!!):

需要添加where条件来进行限制(类似select查询):

实例2:将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分(大原则不变,具体如下图)

2. 筛选条件order by、limit

将总成绩倒数前三的 3 位同学的数学成绩(默认是asc升序的)加上 30 分

  1. 查看成绩倒数的三个同学(select):
  • 其中select和update的order by、limit使用方法是一致

3. 没筛选条件是将所有值更新

更新全表的语句慎用!!

注意注意:

一定要慎用update,它的危害不亚于delete

2. Delete删除

1. 删除数据基本语法

sql 复制代码
DELETE FROM table_name 
[WHERE ...] 
[ORDER BY ...] 
[LIMIT ...]

2. where 条件语句

where的方法和之前所学都一致,删除孙悟空同学的考试成绩:

sql 复制代码
DELETE FROM exam_result WHERE name = '孙悟空';

3. order by、 limit 条件语句

将总分倒数第一名删除

sql 复制代码
delete from exam_result order by asc limit 1;

4. 删除整张表数据

删除整张表同样也一定要慎用!!

我们新建一张表进行测试

sql 复制代码
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;

细节:

AUTO_INCREMENT(主键的自增记录值)在清空表后仍然不会被置位0 的

那么如何将一张表中的数据删除后,AUTO_INCREAMENT被重置呢,然我们接着往后看截断表删除操作:

5. 截断表TRUNCATE

作用:它同样是清空表的一种操作

语法:

sql 复制代码
TRUNCATE [TABLE] table_name

不同直接delete的是:

  1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
  2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事务,所以无法回滚。
  3. 会重置 AUTO_INCREMENT 项
  4. 并且不会记录日志 bin log(暂时认识后面会讲到)

学习使用:

sql 复制代码
-- 准备测试表
CREATE TABLE for_truncate (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);

-- 插入测试数据
INSERT INTO for_truncate (name) VALUES ('A'), ('B'), ('C');

-- 截断整表数据,注意影响行数是 0,所以实际上没有对数据真正操作
TRUNCATE for_truncate;
Query OK, 0 rows affected (0.10 sec)

-- 再查看删除结果
SELECT * FROM for_truncate;

-- 再插入一条数据,自增 id 在重新增长
INSERT INTO for_truncate (name) VALUES ('D');
发现自增长id也没重置了

本章完。预知后事如何,暂听下回分解。

如果有任何问题欢迎讨论哈!

如果觉得这篇文章对你有所帮助的话点点赞吧!

持续更新大量MySQL细致内容,早关注不迷路。

相关推荐
ulias2125 小时前
Linux系统中的权限问题
linux·运维·服务器
青花瓷7 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
mzhan0177 小时前
Linux: lock: preempt_count 是一个线程级别的变量
linux·lock
问简7 小时前
docker 镜像相关
运维·docker·容器
Dreamboat¿8 小时前
SQL 注入漏洞
数据库·sql
Dream of maid8 小时前
Linux(下)
linux·运维·服务器
齐鲁大虾8 小时前
统信系统UOS常用命令集
linux·运维·服务器
Benszen8 小时前
Docker容器化技术实战指南
运维·docker·容器
ZzzZZzzzZZZzzzz…8 小时前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
被摘下的星星9 小时前
MySQL count()函数的用法
数据库·mysql