我在广州学 Mysql 系列——插入、更新与删除数据详解以及实例

news2025/1/5 8:44:59

ℹ️大家好,我是练小杰,今天是2024年12月30号,明天就是2024最后一天了!!
本文将讲述MYSQL数据库的插入,更新以及删除数据~~
复习:👉【有关Mysql数据库的单表,多表查询的练习】
同时,数据库相关内容查看专栏👉【数据库专栏】~
想要了解更多内容,点击主页:【练小杰的CSDN】

“人人期望可达到,我的快乐比天高,人人如意开心欢笑,跳进美梦寻获美好,爬进奇妙口袋里,你的希望必得到~~”
朋友们,今年的梦想都实现了吗?😏
在这里插入图片描述

文章目录

  • 插入数据
    • 基本语法
    • 为数据表的字段插入单条数据
      • 说明
    • 同时插入多条记录
    • 将查询结果插入到表中
      • 说明
    • 使用 INSERT INTO ... SELECT 插入所有列
  • 更新数据
    • 说明
    • 使用 ORDER BY 和 LIMIT 配合用
    • 注意事项
  • 删除数据
    • DELETE 命令删除表数据
    • 使用 TRUNCATE 语句删除所有数据
      • 说明
      • 举例:清空表 lxj 中的所有数据
    • 使用 DROP 语句删除表
    • DELETE 进阶用法(结合 JOIN)
    • 总结
  • 实例
    • 创建数据表books,并定义各个字段
    • 插入books表中数据,分别使用不同的方法插入记录
    • 将小说类型(novel)的书的价格都增加5
    • 将名称为EmmaT的书的价格改为40,并将列名改为drama
    • 删除库存为0的记录

在这里插入图片描述

插入数据

基本语法

INSERT INTO 表名 (1,2,3, ...)
VALUES (1,2,3, ...);

为数据表的字段插入单条数据

  • 使用基本的INSERT语句插入数据要求指定表名称和插入到新记录中的值。
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...);

说明

  • INSERT INTO: 这是 SQL 语句的关键字,表示要执行插入操作
  • table_name: 指定要将数据插入到哪个数据表中,它是数据库中已经存在的数据表的名称。例如,如果你的数据库中有一个名为 employees 的表,你就可以将 table_name 替换为 employees。
  • (column1, column2, column3,...):这部分是可选择的,但通常会使用它。列出了你想要插入数据的具体字段。你可以选择只插入表中的部分字段,而不是全部字段。这样做的好处是,当表的字段较多,而你只需要插入部分字段的数据时,可以明确指定要操作的字段。字段名称需要准确对应表中的列名,它们之间用逗号分隔。
  • VALUES (value1, value2, value3,...):这里列出了要插入到上述指定字段中的具体数据值。这些值的顺序必须与 (column1, column2, column3,...) 中字段的顺序一一对应。换句话说,就是value1 将被插入到 column1value2 将被插入到 column2,以此类推。

同时插入多条记录

  • INSERT语句可以同时向数据表中插入多条记录,插入时指定多个值列表,每个值列表之间用逗号分隔开
  • 基本语法格式:
INSERT INTO 表名 (1,2,3, ...)
VALUES 
    (1a,2a,3a, ...),
    (1b,2b,3b, ...),
    (1c,2c,3c, ...);
  • 举例:
    若有一个名为 lxj 的表,表结构为:
    在这里插入图片描述
INSERT INTO students (id, name, age)
VALUES (1, '哆啦A梦', 31),(2,'野比大雄',10),(3,'源静香',11);

将查询结果插入到表中

  • INSERT语句和SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入多个行。
INSERT INTO 目标表 (1,2,3, ...)
SELECT1,2,3, ...
FROM 源表
WHERE 条件;

说明

  • 目标表:数据将被插入到的表
  • (列1, 列2, 列3, ...) :可选,指定目标表中要插入数据的列。若省略,则默认插入所有列,且值的顺序应与目标表中列的顺序一致。
  • SELECT ... FROM 源表 WHERE 条件:标准的 SELECT 查询,用于从源表中检索数据。

使用 INSERT INTO … SELECT 插入所有列

  • 目标表和源表的列完全一致,可以省略列名。
  • ⚠️ 一定要确保两个表的列顺序和类型完全一致,否则可能会导致数据插入错误。
INSERT INTO 目标表
SELECT *FROM 源表
WHERE 列名 = '数值';

更新数据

  • 更新数据主要使用 UPDATE 语句。
  • UPDATE 语句允许你修改表中现有的记录。根据需求,你可以更新单条记录、多条记录,甚至使用复杂的条件来精确控制需要更新的数据。
UPDATE 表名
SET1 = 新值1,2 = 新值2, ...
WHERE 条件;

说明

  • 表名 :要更新的表名称。
  • SET 列1 = 新值1, 列2 = 新值2, ... :指定要更新的列及其新值。可以更新一个或多个列。
  • WHERE 条件 :可选,指定哪些记录需要被更新。如果省略 WHERE 子句,表中的所有记录都会被更新

使用 ORDER BY 和 LIMIT 配合用

  • ORDER BY:指定更新的顺序。
  • LIMIT:限制更新的记录数。
UPDATE 表名
SET1 = 新值1,2 = 新值2, ...
WHERE 条件
ORDER BY[ASC|DESC]
LIMIT 行数;

注意事项

1.备份数据:在执行更新操作之前,建议备份相关数据,以防出现意外情况。
2.使用 WHERE 子句:始终使用 WHERE 子句来指定要更新的记录,避免意外更新所有记录。
3.事务处理:对于重要的更新操作,建议使用事务 (BEGIN TRANSACTION, COMMIT, ROLLBACK) 来确保数据的一致性。
4.权限问题:确保执行更新操作的用户具有对目标表的适当权限。
5.外键约束:如果表中有外键约束,更新操作必须符合外键约束条件。
6.索引优化:对于大数据量的更新操作,确保相关列有适当的索引,以提高更新效率。

删除数据

  • 从数据表中删除数据使用DELETE语句,DELETE语句允许WHERE子句指定删除条件。
  • 此外,还有 TRUNCATEDROP 语句用于删除表中的所有数据或删除整个表。

DELETE 命令删除表数据

DELETE FROM 表名 WHERE 条件;

表名:这里的表名,指要删除数据的表名称
WHERE 条件:可选,指定哪些记录需要被删除。如果省略 WHERE 子句,表中的所有记录都会被删除。

使用 TRUNCATE 语句删除所有数据

  • TRUNCATE 操作无法回滚,因此在执行前请确保数据不再需要或已备份
TRUNCATE TABLE 表名;

说明

TRUNCATE 会快速删除表中的所有数据,但不会逐行删除,而是直接清空表。
TRUNCATEDELETE FROM 表名 不同,如果表有自增列,TRUNCATE 会重置自增计数器。
TRUNCATE 不支持 WHERE 子句,因此无法删除特定条件的数据。

举例:清空表 lxj 中的所有数据

  • 清空数据之前最好先备份
TRUNCATE TABLE lxj;

使用 DROP 语句删除表

DROP TABLE 会删除整个表,包括表结构和所有数据。 这是一个不可逆的操作,执行后表将不复存在。

DROP TABLE 表名;

DELETE 进阶用法(结合 JOIN)

  • 假设有一个名为 employees 的表,数据如下:

在这里插入图片描述- 从 employees 表中删除所有属于 “关闭的部门” 的员工

DELETE e
FROM employees e
JOIN departments d ON e.department_id = d.id
WHERE d.name = '关闭的部门';

总结

  • 三种主要删除数据命令的区别:

DELETE:用于删除表中的特定记录或所有记录,但保留表结构。
TRUNCATE:用于快速删除表中的所有数据,并重置自增计数器,但保留表结构。
DROP:用于删除整个表,包括表结构和所有数据。

实例

创建数据表books,并定义各个字段

CREATE TABLE books
(
id      	INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name   	VARCHAR(40) NOT NULL,
authors  VARCHAR(200) NOT NULL,
price    	INT(11) NOT NULL,
pubdate 	YEAR NOT NULL,
note    	VARCHAR(255) NULL,
num    	INT NOT NULL DEFAULT 0
);

插入books表中数据,分别使用不同的方法插入记录

  • 表创建好之后,用SELECT语句查看表中的数据,结果如下:
SELECT * FROM books;
Empty set (0.00 sec)

可以看到,当前表中为空,没有任何数据,下面向表中插入记录。

  • 指定所有字段名称插入单条记录
    SQL语句如下:
 INSERT INTO books (id, name, authors, price, pubdate,note,num)
   VALUES(1, 'Tale of AAA', 'Dickes', 23, '1995', 'novel',11);
Query OK, 1 row affected (0.02 sec)
  • 不指定字段名称插入单条记录
    SQL语句如下:
 INSERT INTO books
   VALUES (2,'EmmaT','Jane lura',35,'1993','joke',22);
Query OK, 1 row affected (0.01 sec)
  • 再使用SELECT语句查看当前表中的数据
 SELECT * FROM books;
+----+------------------+-----------+-------+---------+---------+-----+
| id | name        | authors   | price | pubdate | note   | num |
+----+-----------------+-----------+---------+---------+---------+-----+
|  1 | Tale of AAA | Dickes  |    23 |  1995 | novel  |  11  |
|  2 | EmmaT    | Jane lura  |    35 |  1993 | joke   |  22  |
+----+----------------+-------------+---------+----------+-------+------+
2 rows in set (0.00 sec)

可以看到,两条语句分别成功插入了两条记录。

  • 同时插入多条记录,使用INSERT语句将剩下的多条记录插入表中,SQL语句如下:
 INSERT INTO books
  VALUES(3, 'Story of Jane', 'Jane Tim', 40, '2001', 'novel', 0),
     (4, 'Lovey Day', 'George Byron', 20, '2005', 'novel', 30),
     (5, 'Old Land', 'Honore Blade', 30, '2010', 'law',0),
     (6,'The Battle','Upton Sara',33,'1999', 'medicine',40),
     (7,'Rose Hood','Richard Kale',28,'2008', 'cartoon',28);
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0

可以看到,语句执行成功,总共插入了5条记录

  • 使用SELECT语句查看表中所有的记录
 SELECT * FROM books;
+----+---------------+--------------+-------+---------+----------+-----+
| id | name          | authors      | price | pubdate | note     | num |
+----+---------------+--------------+-------+---------+----------+-----+
|  1 | Tale of AAA   | Dickes       |    23 |    1995 | novel    |  11 |
|  2 | EmmaT         | Jane lura    |    35 |    1993 | joke     |  22 |
|  3 | Story of Jane | Jane Tim     |    40 |    2001 | novel    |   0 |
|  4 | Lovey Day     | George Byron |    20 |    2005 | novel    |  30 |
|  5 | Old Land      | Honore Blade |    30 |    2010 | law      |   0 |
|  6 | The Battle    | Upton Sara   |    33 |    1999 | medicine |  40 |
|  7 | Rose Hood     | Richard Kale |    28 |    2008 | cartoon  |  28 |
+----+---------------+--------------+-------+---------+----------+-----+
7 rows in set (0.01 sec)

由结果可以看到,所有记录成功插入表中。

将小说类型(novel)的书的价格都增加5

  • 执行前先使用SELECT语句查看当前记录:
SELECT id, name, price, note FROM books WHERE note = 'novel';
+----+----------------------+-------+-------+
| id | name            | price | note  |
+----+----------------------+-------+-------+
|  1 | Tale of AAA    |    23 | novel |
|  3 | Story of Jane  |    40 | novel |
|  4 | Lovey Day      |    20 | novel |
+----+---------------+-------+-------+
3 rows in set (0.00 sec)
  • 使用UPDATE语句执行更新操作:
UPDATE books SET price = price + 5 WHERE note = 'novel';

Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

由结果可以看到,该语句对3条记录进行了更新

  • 使用SELECT语句查看更新结果:
 SELECT id, name, price, note FROM books WHERE note = 'novel';
+----+---------------+-------+-------+
| id | name          | price | note  |
+----+---------------+-------+-------+
|  1 | Tale of AAA   |    28 | novel |
|  3 | Story of Jane |    45 | novel |
|  4 | Lovey Day     |    25 | novel |
+----+---------------+-------+-------+
3 rows in set (0.00 sec)

由对比可以看到,price的值都在原来的价格之上增加了5

将名称为EmmaT的书的价格改为40,并将列名改为drama

  • 修改语句为:
UPDATE books SET price=40, note= 'drama ' WHERE name= 'EmmaT';
  • 执行修改前,使用SELECT语句查看当前记录:
 SELECT name, price, note FROM books WHERE name='EmmaT';
+---------+-------+------+
| name  | price | note |
+----------+-------+------+
| EmmaT |  35 | joke |
+---------+-------+------+
1 row in set (0.00 sec)
  • 执行修改操作,结果为:
UPDATE books SET price=40,note='drama' WHERE name='EmmaT';

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
  • 然后,使用SELECT查看执行结果:
SELECT name, price, note FROM books WHERE name='EmmaT';
+---------+--------+-------+
| name  |  price | note  |
+---------+---------+-------+
| EmmaT |  40  | drama |
+---------+---------+-------+
1 row in set (0.00 sec)

可以看到,price和note字段的值已经改变,修改操作成功。

删除库存为0的记录

  • 删除库存为0的语句为:
DELETE FROM books WHERE num=0;
  • 删除之前使用SELECT语句查看当前记录:
 SELECT * FROM books WHERE num=0;
+----+----------------+----------------+---------+---------+-------+-----+
| id | name        | authors    | price  | pubdate |  note | num |
+----+-----------------+---------------+----------+---------+-------+-----+
|  3 | Story of Jane | Jane Tim   |    45 |  2001 | novel  |   0 |
|  5 | Old Land    | Honore Blade |   30 |  2010 |  law  |   0 |
+----+------------------+----------------+--------+---------+--------+-----+
2 rows in set (0.00 sec)

可以看到,当前有两条记录的num值为0,

  • 下面使用DELETE语句删除这两条记录
    SQL语句如下:
 DELETE FROM books WHERE num=0;
Query OK, 2 rows affected (0.00 sec)
  • 语句执行成功,查看操作结果:
SELECT * FROM books WHERE num=0;
Empty set (0.00 sec)

由执行结果可以看到,查询结果为空,表中已经没有num=0的记录。

本文有关mysql数据库的插入、更新以及删除数据已经讲完了,明天再见!!
😆 主页 【练小杰的CSDN】
ℹ️欢迎各位在评论区踊跃讨论,积极提出问题,解决困惑!!!
⚠️若博客里的内容有问题,欢迎指正,我会及时修改!!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2269749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS Next ArkUI ListListItem笔记

学习目标: List和ListItem的使用 学习内容: import { NewsInfo, newsInfoList } from ../viewmodel/NewsInfoclass DividerTmp {strokeWidth: Length 1startMargin: Length 60endMargin: Length 10color: ResourceColor #ffe9f0f0constructor(str…

机器人C++开源库The Robotics Library (RL)使用手册(四)

建立自己的机器人3D模型和运动学模型 这里以国产机器人天机TR8为例,使用最普遍的DH运动学模型,结合RL所需的描述文件,进行生成。 最终,需要的有两个文件,一个是.wrl三维模型描述文件;一个是.xml运动学模型描述文件。 1、通过STEP/STP三维文件生成wrl三维文件 机器人的…

游戏引擎学习第70天

这一节没讲什么主要是关于接下来要干的任务 开发过程概览 我们正在进行最后的总结,并计划接下来的步骤。目前的目标是创建一个包含所有必要组件的游戏引擎原型版本,目的是让这些部分能够协同工作并展现预期效果。通过这一过程,可以实验和探…

Android笔试面试题AI答之Android基础(8)

Android入门请看《Android应用开发项目式教程》,视频、源码、答疑,手把手教 文章目录 1.Android新建工程需要注意的地方有哪些?**1. 选择合适的项目模板****2. 配置项目基本信息****3. 选择最低 SDK 版本****4. 配置构建工具****5. 选择编程…

传统听写与大模型听写比对

在快节奏的现代生活中,听写技能仍然是学习语言和提升认知能力的重要环节。然而,传统的听写练习往往枯燥乏味,且效率不高。现在,随着人工智能技术的发展,大模型听写工具的问世,为传统听写带来了革命性的变革…

赛博周刊·2024年度工具精选(画板二维码类)

一、画板类 1、Excalidraw 一款好用的手绘工具,无需注册,支持多人协作。GitHub项目地址:https://github.com/excalidraw/excalidraw。 2、 Floating Whiteboard 一个在线的网页白板工具。 3、BoardOS:在线实时白板协作系统 一…

论文研读:Text2Video-Zero 无需微调,仅改动<文生图模型>推理函数实现文生视频(Arxiv 2023-03-23)

论文名:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators 1. 摘要 1.1 方法总结 通过潜空间插值, 实现动作连续帧。 以第一帧为锚定,替换原模型的self-attention,改为cross-attention 实现 保证图片整体场…

Spring自动化创建脚本-解放繁琐的初始化配置!!!(自动化SSM整合)

一、实现功能(原创,转载请告知) 1.自动配置pom配置文件 2.自动识别数据库及数据表,创建Entity、Dao、Service、Controller等 3.自动创建database.properties、mybatis-config.xml等数据库文件 4.自动创建spring-dao.xml spring-mvc.xml …

Unity3D仿星露谷物语开发12之创建道具列表

1、目标 道具是游戏的核心部分,道具包括你可以拾取的东西,你可以使用的工具和你能种的东西等。 本节就是创建道具的信息类。同时了解ScriptableObject类的使用。 2、创建道具枚举类 修改Assets -> Scripts -> Enums.cs脚本, 新增如…

华为配置 之 RIP

简介: RIP(路由信息协议)是一种广泛使用的内部网关协议,基于距离向量算法来决定路径。它通过向全网广播路由控制信息来动态交换网络拓扑信息,从而计算出最佳路由路径。RIP易于配置和理解,非常适用于小型网络…

使用new String(“yupi”)语句在Java中会创建多少个对象?

在 Java 编程中,字符串的处理是一个常见且重要的部分。理解字符串对象的创建和内存管理对于编写高效和优化的代码至关重要。当我们在 Java 中使用 new String("yupi") 语句时,实际上会涉及到多个对象的创建。本文将详细解释这一过程&#xff0…

vue使用el-select下拉框自定义复选框

在 Vue 开发中,高效且美观的组件能极大地提升用户体验和开发效率。在vue中使用elementplus 的 el-select下拉框实现了一个自定义的多选下拉框组件。 一、代码功能概述 这段代码创建了一个可多选的下拉框组件,通过el-select和el-checkbox-group结合的方…

Python基于EasyOCR进行路灯控制箱图像文本识别项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着城市化进程的加快,智能城市建设成为了现代社会发展的重要方向。路灯作为城市基础设…

TDengine 新功能 VARBINARY 数据类型

1. 背景 VARBINARY 数据类型用于存储二进制数据,与 MySQL 中的 VARBINARY 数据类型功能相同,VARBINARY 数据类型长度可变,在创建表时指定最大字节长度,使用进按需分配存储,但不能超过建表时指定的最大值。 2. 功能说明…

使用位操作符实现加减乘除!

欢迎拜访:雾里看山-CSDN博客 本篇主题:使用位操作符实现加减乘除 发布时间:2025.1.1 隶属专栏:C语言 目录 位操作实现加法运算()原理代码示例 位操作实现减法运算(-)原理代码示例 位…

基于SpringBoot的题库管理系统的设计与实现(源码+SQL+LW+部署讲解)

文章目录 摘 要1. 第1章 选题背景及研究意义1.1 选题背景1.2 研究意义1.3 论文结构安排 2. 第2章 相关开发技术2.1 前端技术2.2 后端技术2.3 数据库技术 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系统需求分析 4. 第4章 系统概要设计4.1 系统功能模块设计4.2 数据库设计 5.…

MATLAB条件判断(switch-case-otherwise-end型)

在条件判断时,遇到很多个条件,如果再用 i f − e l s e if-else if−else语句就显得很繁琐,所以我们可以用 s w i t c h switch switch来解决 结构: 判断对象可以为数字,也可以为字符 如图: 注意&#x…

windows文件夹自定义右键调用powershell完成7zip加密打包

准备powershell脚本 2. regedit的路径是:计算机\HKEY_CLASSES_ROOT\Directory\shell\,在此项目下新增子项目diy_command\command,command的数据值为powershell D:\windowsProjects\directory_diy.ps1 %1 效果,点击后进入和power…

从0入门自主空中机器人-2-1【无人机硬件框架】

关于本课程: 本次课程是一套面向对自主空中机器人感兴趣的学生、爱好者、相关从业人员的免费课程,包含了从硬件组装、机载电脑环境设置、代码部署、实机实验等全套详细流程,带你从0开始,组装属于自己的自主无人机,并让…

C语言:位段

位段的内存分配: 1. 位段的成员可以是 int unsigned int signed int 或者是char (属于整形家族)类型 2. 位段的空间上是按照需要以4个字节( 类型 int )或者1个字节( char )的方式来开辟的。 3. 位段涉及…