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

『 MySQL数据库 』CRUD之UD,表的数据更新(修改)及删除

文章目录

    • 🥩 Update (更新/修改) 🦖
      • 🥚 修改单行数据的某个字段内的数据 🦕
      • 🥚 配合LIMIT分页与ORDER BY 对符合条件的多条数据进行修改 🦕
      • 🥚 对整表的某个数据字段进行修改 🦕
    • 🥩 Delete (删除数据) 🦖
      • 🥚 删除单条数据 🦕
      • 🥚 删除整表数据 🦕
      • 🥚 截断表 (TRUNCATE) 🦕
    • 🥩 总结 🦖🦖🦖🦖🦖


🥩 Update (更新/修改) 🦖

该语法主要针对于对数据库的表内数据进行修改;
一般该操作需要配合条件筛选,否则操作将影响整张表;
语法:

UPDATE table_name SET column = expr[,column = expr ... ]
[WHERE ...] [ORDER BY ...] [LIMIT ...]

存在一张表:

+----+---------+---------+------+---------+
| id | name    | chinese | math | english |
+----+---------+---------+------+---------+
|  1 | Lihua   |      67 |   88 |      90 |
|  2 | Liming  |      57 |   58 |      70 |
|  3 | Zhaolao |      66 |   80 |      47 |
|  4 | Wu      |      76 |   70 |      47 |
|  5 | Wuqi    |      88 |   43 |      80 |
|  6 | Liqiang |      89 |   92 |      90 |
|  7 | Qinsu   |      90 |   74 |      67 |
|  8 | Zhaoli  |      54 |   74 |     100 |
+----+---------+---------+------+---------+

🥚 修改单行数据的某个字段内的数据 🦕

示例:将name字段为Lihua的chinese字段数据修改为100

mysql> select name,chinese from Point where name ='Lihua';# 打印数据进行观察
+-------+---------+
| name  | chinese |
+-------+---------+
| Lihua |      67 |
+-------+---------+
1 row in set (0.00 sec)mysql> update Point set chinese=100 where name='Lihua';# 修改数据
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select name,chinese from Point where name ='Lihua';# 打印数据进行观察
+-------+---------+
| name  | chinese |
+-------+---------+
| Lihua |     100 |
+-------+---------+
1 row in set (0.00 sec)

也可对单行数据的多个字段数据进行修改,前提是这个数据具有唯一属性(体现了主键约束的重要性);


🥚 配合LIMIT分页与ORDER BY 对符合条件的多条数据进行修改 🦕

示例:将字段条件chinese+math+english前3大的数据中的math字段数据+30

# 打印数据进行查看 -- 修改前
mysql> select name,math from Point order by math+chinese+english desc limit 3;
+---------+------+
| name    | math |
+---------+------+
| Lihua   |   88 |
| Liqiang |   92 |
| Qinsu   |   74 |
+---------+------+
3 rows in set (0.00 sec)mysql> select name,math+chinese+english from Point order by math+chinese+english desc limit 3;
+---------+----------------------+
| name    | math+chinese+english |
+---------+----------------------+
| Lihua   |                  278 |
| Liqiang |                  271 |
| Qinsu   |                  231 |
+---------+----------------------+
3 rows in set (0.00 sec)# 修改数据
mysql> update Point set math=math+30 order by math+chinese+english desc limit 3;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0# 打印数据进行查看 -- 修改后
mysql> select name,math+chinese+english from Point order by math+chinese+english desc limit 3;
+---------+----------------------+
| name    | math+chinese+english |
+---------+----------------------+
| Lihua   |                  308 |
| Liqiang |                  301 |
| Qinsu   |                  261 |
+---------+----------------------+
3 rows in set (0.00 sec)mysql> select name,math from Point order by math+chinese+english desc limit 3;
+---------+------+
| name    | math |
+---------+------+
| Lihua   |  118 |
| Liqiang |  122 |
| Qinsu   |  104 |
+---------+------+

当需要修改的数据条件繁琐的前提可以先使用SELECT FROM语句先对需要修改的数据进行查看筛选,再对该SELECT FROM语句根据筛选条件修改为对应的UPDATE SET语句对数据进行修改!


🥚 对整表的某个数据字段进行修改 🦕

UPDATE SET语句中若是没有用WHERE语句进行筛选则更新整表!
在SQL中对整表的操作需要慎重;
示例:将整表中的english字段数据修改为 *=2 ;

# 使用SELECT FROM语句对数据进行查看 -- 修改前
mysql> select id,name,english from Point;
+----+---------+---------+
| id | name    | english |
+----+---------+---------+
|  1 | Lihua   |      90 |
|  2 | Liming  |      70 |
|  3 | Zhaolao |      47 |
|  4 | Wu      |      47 |
|  5 | Wuqi    |      80 |
|  6 | Liqiang |      90 |
|  7 | Qinsu   |      67 |
|  8 | Zhaoli  |     100 |
+----+---------+---------+
8 rows in set (0.00 sec)# 对数据进行修改
mysql> update Point set english*=2 ; #SQL语句中不支持*=,+=等语法!
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*=2' at line 1# errormysql> update Point set english=english*2 ;# 正确
Query OK, 8 rows affected (0.01 sec)
Rows matched: 8  Changed: 8  Warnings: 0# 使用SELECT FROM语句对数据进行查看 -- 修改后
mysql> select id,name,english from Point;
+----+---------+---------+
| id | name    | english |
+----+---------+---------+
|  1 | Lihua   |     180 |
|  2 | Liming  |     140 |
|  3 | Zhaolao |      94 |
|  4 | Wu      |      94 |
|  5 | Wuqi    |     160 |
|  6 | Liqiang |     180 |
|  7 | Qinsu   |     134 |
|  8 | Zhaoli  |     200 |
+----+---------+---------+
8 rows in set (0.00 sec)

🥩 Delete (删除数据) 🦖

该语句一般用于对某条数据的删除,也可以删除整表的数据;
语法:

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

存在一张表(to_del):

+-----+-----------+
| id  | name      |
+-----+-----------+
| 001 | Lihua     |
| 002 | Liming    |
| 003 | Zhangchao |
| 004 | Zhaoli    |
| 005 | Lili      |
+-----+-----------+

🥚 删除单条数据 🦕

示例:删除id字段为2的数据

mysql> select * from to_del-> ;
+-----+-----------+
| id  | name      |
+-----+-----------+
| 001 | Lihua     |
| 002 | Liming    |
| 003 | Zhangchao |
| 004 | Zhaoli    |
| 005 | Lili      |
+-----+-----------+
5 rows in set (0.00 sec)mysql> delete from to_del where id=2;
Query OK, 1 row affected (0.00 sec)mysql> select * from to_del;
+-----+-----------+
| id  | name      |
+-----+-----------+
| 001 | Lihua     |
| 003 | Zhangchao |
| 004 | Zhaoli    |
| 005 | Lili      |
+-----+-----------+
4 rows in set (0.00 sec)

🥚 删除整表数据 🦕

UPDATE SET语句相同,DELETE FROM语句也可以删除整表的数据;

-- 查看表内数据 删除前
mysql> select * from to_del;
+-----+-----------+
| id  | name      |
+-----+-----------+
| 001 | Lihua     |
| 003 | Zhangchao |
| 004 | Zhaoli    |
| 005 | Lili      |
+-----+-----------+
4 rows in set (0.00 sec)-- 删除整表数据 
mysql> delete from to_del;
Query OK, 4 rows affected (0.00 sec)-- 查看表内数据 删除后
mysql> select * from to_del;
Empty set (0.00 sec)

🥚 截断表 (TRUNCATE) 🦕

语法:

TRUNCATE [TABLE] table_name;

截断表的操作与删除整表的作用类似也为清除整表内容(不作示例);
但存在不同;
同样以该表进行测试;

+-----+-----------+
| id  | name      |
+-----+-----------+
| 001 | Lihua     |
| 002 | Liming    |
| 003 | Zhangchao |
| 004 | Zhaoli    |
| 005 | Lili      |
+-----+-----------+
  • 使用SHOW CREATE TABLE table_name \G 对表的详细信息进行查看;

    mysql> show create table to_del\G
    *************************** 1. row ***************************Table: to_del
    Create Table: CREATE TABLE `to_del` (
    `id` int(3) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT 'id增加主键约束',
    `name` varchar(20) NOT NULL COMMENT 'name增加唯一键约束',
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`)
    ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    

    对该表进行查看时自增AUTO_INCREMENT关键字为6;

  • 使用DELETE FROM删除整表;

    mysql> delete from to_del;
    Query OK, 5 rows affected (0.01 sec)mysql> show create table to_del\G
    *************************** 1. row ***************************Table: to_del
    Create Table: CREATE TABLE `to_del` (
    `id` int(3) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT 'id增加主键约束',
    `name` varchar(20) NOT NULL COMMENT 'name增加唯一键约束',
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`)
    ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    

    使用DELETE FROM对整表进行删除时其AUTO_INCREMENT关键字并没有改变;

  • 使用TRUNCATE对整表进行截断操作;

    mysql> truncate to_del;
    Query OK, 0 rows affected (0.00 sec)mysql> show create table to_del\G
    *************************** 1. row ***************************Table: to_del
    Create Table: CREATE TABLE `to_del` (
    `id` int(3) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT 'id增加主键约束',
    `name` varchar(20) NOT NULL COMMENT 'name增加唯一键约束',
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    

    使用TRUNCATE对表进行截断操作时此时该表的AUTO_INCREMENT关键字不见了;

综上所述可以确定:
1. TRUNCATE只能对整表进行操作,且不能像DELETE对部分数据进行操作;
2. 若是表中存在AUTO_INCREMENT自增约束时,TRUNCATE的截断表操作将会重置AUTO_INCREMENT;
除此之外,对于DELETE来说,TRUNCATE的删除操作会较快,因为TRUNCATE在操作删除数据时并不经过真正的事务,所以无法回滚;


🥩 总结 🦖🦖🦖🦖🦖

对于对表内数据的操作来说,无论是UPDATE还是DELETETRUNCATE对整表进行操作都应该注意;
尽量在对表内数据修改或删除前对需要修改\删除的数据使用 SELETC进行查看,避免误操作;

相关文章:

『 MySQL数据库 』CRUD之UD,表的数据更新(修改)及删除

文章目录 🥩 Update (更新/修改) 🦖🥚 修改单行数据的某个字段内的数据 🦕🥚 配合LIMIT分页与ORDER BY 对符合条件的多条数据进行修改 🦕🥚 对整表的某个数据字段进行修改 🦕 &#…...

贪心算法及相关例题

目录 什么是贪心算法? leetcode455题.分发饼干 leetcode376题.摆动序列 leetcode55题.跳跃游戏I leetcode45题.跳跃游戏II leetcode621题.任务调度器 leetcode435题.无重叠空间 leetcode135题.分发糖果 什么是贪心算法? 贪心算法更多的是一种思…...

给企业做公众号运营你都有哪些宝贵经验?

运营企业公众号需要长期的坚持和不断的创新,如何运营好一个企业公众号,使其成为企业与受众互动、传递价值、提升品牌形象的平台,是许多企业所面临的挑战。但只要不断学习,总结经验,就一定能够找到适合自己企业的公众号…...

2023亚太地区数学建模B题思路分析+模型+代码+论文

目录 2023亚太地区数学建模A题思路:开赛后第一时间更新,获取见文末名片 2023亚太地区数学建模B题思路:开赛后第一时间更新,获取见文末名片 2023亚太地区数学建模C题思路:开赛后第一时间更新,获取见文末名…...

Electron+Ts+Vue+Vite桌面应用系列:sqlite增删改查操作篇

文章目录 1️⃣ sqlite应用1.1 sqlite数据结构1.2 初始化数据库1.3 初始化实体类1.4 操作数据类1.5 页面调用 优质资源分享 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418 ElectronTsVueVite桌面应用系列 :这个系列包括了从桌…...

c语言编程题经典100例——(36~40例)

1&#xff0c;实现快速排序算法。 下面是用C语言实现快速排序算法的示例代码&#xff1a; #include <stdio.h> void swap(int* a, int* b) { int t *a; *a *b; *b t; } int partition(int arr[], int low, int high) { int pivot arr[high]; int i (low …...

SQL Server实现参数化增删改查Class类

目录 SqlServerDatabase.Class Main调用 SqlServerDatabase.Class using System; using System.Data; using System.Data.SqlClient; class SqlServerDatabase { private readonly string connectionString; public SqlServerDatabase(string connectionString) { …...

【Linux】 sudo命令使用

sudo sudo是linux系统管理指令&#xff0c;是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具&#xff0c;如halt&#xff0c;reboot&#xff0c;su等等。这样不仅减少了root用户的登录 和管理时间&#xff0c;同样也提高了安全性。sudo不是对shell的一个代替…...

Redis key的类型以及命令

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…...

数组元素积的符号

数组元素积的符号 描述 : 已知函数 signFunc(x) 将会根据 x 的正负返回特定值&#xff1a; 如果 x 是正数&#xff0c;返回 1 。如果 x 是负数&#xff0c;返回 -1 。如果 x 是等于 0 &#xff0c;返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的…...

数据脱敏方案

数据脱敏方案 什么是数据脱敏 数据脱敏的定义 数据脱敏百度百科中是这样定义的&#xff1a; 数据脱敏&#xff0c;指对某些敏感信息通过脱敏规则进行数据的变形&#xff0c;实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏…...

蓝桥杯每日一题2023.11.28

题目描述 三羊献瑞 - 蓝桥云课 (lanqiao.cn) 题目分析 本题首先进行观察可以确定 1.“三”为 1 &#xff08;十进制数字要进位进一位&#xff09; 2.“祥”一定不为 0 &#xff08;有前导0就不能算为 4 位数&#xff09; 使用搜索时将其特判 #include<bits/stdc.h> …...

【数据库连接池】01:连接池初始化

连接池初始化 OVERVIEW 连接池初始化1.Connection类Connection.hConnection.cpp 2.CommonConnectionPool类CommonConnectionPool.hCommonConnectionPool.cpp 1.Connection类 封装Connection类&#xff0c;在该类内调用mysql提供的接口实现对数据库的增删改查&#xff0c; Con…...

Java基于springboot开发的土特产网站商城多商家源码

主要功能&#xff1a;用户可以浏览特产&#xff0c;按分类和产地搜索&#xff0c;按分类查询特产&#xff0c;搜索店铺&#xff0c;查看评价&#xff0c;加入购物车&#xff0c;下单&#xff0c;查看店铺主页信息特产等店铺内搜索等&#xff1b;用户可申请开通店铺&#xff0c;…...

Linux CentOS7 LVM

LVM&#xff08;Logical Volume Manger&#xff09;逻辑卷管理&#xff0c;Linux磁盘分区管理的一种机制&#xff0c;建立在硬盘和分区上的一个逻辑层&#xff0c;提高磁盘分区管理的灵活性。物理设备&#xff0c;是用于保留逻辑卷中所存储数据的存储设备。它们是块设备,可以是…...

ArkTS开发webview,html页面中的input和按钮等操作均无响应 【Bug已解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案(根据此方法即可解决此Bug):本文相关知识本Bug常规排除步骤ArkTS项目场景: 在鸿蒙开发过程遇到的问题: 问题 ArkTS API9 使用webview加载的html,页面中的按钮和input等操作均无响应 是有相关API设置webview是否可以touch或…...

滴滴、阿里云、语雀相继宕机,损失巨大,软件的高可用失效了么?

在北京寒冬的夜里&#xff0c;小程加班完成了当天最后一个任务&#xff0c;他拖着疲惫的身体离开了位于西二旗的工位&#xff0c;走到办公楼下&#xff0c;下意识地拿出手机打开滴滴&#xff0c;准备打车回家&#xff0c;但是他却发现滴滴的打车页面显示网络异常。起初小程以为…...

基于binlog实现一些业务(Binlog4j)

前言 今天要跟大家分享的是监控数据变化&#xff0c;实现自己的业务的另一个思路&#xff0c;基于数据库的binglog。我这里是用的Binlog4j实现&#xff0c;希望看总结的&#xff0c;直接看最后。 一、Binlog4j是什么&#xff1f; Binlog4j是轻量级 Mysql Binlog 客户端, 提供宕…...

python实现rpc的几种方式(SimpleXMLRPCServer 自带的、第三方ZeroRPC)、连接linux远程开发分布式锁、分布式id

1 python实现rpc的几种方式 1.1 SimpleXMLRPCServer 自带的 1.2 第三方ZeroRPC 2 连接linux远程开发 3 分布式锁 4 分布式id 1 python实现rpc的几种方式 # 远程过程调用-1 借助于rabbitmq,可以跨语言-2 SimpleXMLRPCServer 自带的-3 ZeroRPC-4 GRPC&#xff1a;跨语言的 htt…...

ARM麒麟V10 auditctl启动失败处理

问题&#xff1a; 业务服务器需要启用审计服务&#xff0c;但是启动审计服务失败&#xff0c;查看状态提示audit0。 修改配置文件/boot/efi/EFI/kylin/grub.cfg 删除audit0&#xff0c;或者设置audit1。 重启服务器后验证状态。 auditctl -D echo "-w /data -p rwxa"…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...