夜猫子的知识栈 夜猫子的知识栈
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《Web Api》
    • 《ES6教程》
    • 《Vue》
    • 《React》
    • 《TypeScript》
    • 《Git》
    • 《Uniapp》
    • 小程序笔记
    • 《Electron》
    • JS设计模式总结
  • 《前端架构》

    • 《微前端》
    • 《权限控制》
    • monorepo
  • 全栈项目

    • 任务管理日历
    • 无代码平台
    • 图书管理系统
  • HTML
  • CSS
  • Nodejs
  • Midway
  • Nest
  • MySql
  • 其他
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Ajax
  • Vite
  • Vitest
  • Nuxt
  • UI库文章
  • Docker
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

夜猫子

前端练习生
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《Web Api》
    • 《ES6教程》
    • 《Vue》
    • 《React》
    • 《TypeScript》
    • 《Git》
    • 《Uniapp》
    • 小程序笔记
    • 《Electron》
    • JS设计模式总结
  • 《前端架构》

    • 《微前端》
    • 《权限控制》
    • monorepo
  • 全栈项目

    • 任务管理日历
    • 无代码平台
    • 图书管理系统
  • HTML
  • CSS
  • Nodejs
  • Midway
  • Nest
  • MySql
  • 其他
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Ajax
  • Vite
  • Vitest
  • Nuxt
  • UI库文章
  • Docker
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Node基础

  • 《MySQL》学习笔记

    • Navicat for MySQL
    • SQL语法
    • 查询操作
    • 数据统计
    • 高级查询
    • 内置函数
    • 数据修改
      • 插入数据:insert
        • insert 语句
        • 特殊情况
        • replace 语句
      • 更新数据:update
      • 删除数据:delete
        • 性能
        • 事务处理
    • 表的操作
    • 列的属性
    • 多表查询
    • 视图
    • 索引
    • 存储程序
    • 游标
    • 事务
    • 安全管理
    • 数据备份
    • 其他内容
  • Midway

  • Nest

  • 其他

  • 服务端
  • 《MySQL》学习笔记
夜猫子
2023-12-31
目录

数据修改

# 数据修改

数据的操作主要可以分为两大类:1.查询操作;2.修改操作。

MySQL 主要有3种操作,这些操作都会对表数据进行修改。

语句 说明
insert 增加数据
delete 删除数据
update 更新数据

# 插入数据:insert

# insert 语句

在 MySQL 中,我们可以使用 insert 语句来往一张表中插入数据。插入数据,也就是“增加数据”

insert into 表名(列1, 列2, …, 列n) 
values(值1, 值2, …, 值n)
1
2

**示例:**创建水果表

-- 创建表格
CREATE TABLE fruits (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    type VARCHAR(50),
    season VARCHAR(20),
    price DECIMAL(10, 2),
    date DATE
);
-- 插入数据
insert into fruit
values
('葡萄', '浆果', '夏', 27.3, '2022-08-06'),
('柿子', '浆果', '秋', 6.4, '2022-10-20'),
('橘子', '浆果', '秋', 11.9, '2022-09-01'),
('山竹', '仁果', '夏', 40.0, '2022-07-12'),
('苹果', '仁果', '秋', 12.6, '2022-09-18'),
('梨子', '仁果', '秋', 13.9, '2022-11-24'),
('西瓜', '瓜果', '夏', 4.5, '2022-06-01'),
('菠萝', '瓜果', '夏', 11.9, '2022-08-10'),
('香瓜', '瓜果', '夏', 8.8, '2022-07-28'),
('哈密瓜', '瓜果', '秋', 7.5, '2022-10-09');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 特殊情况

  1. 顺序不一致

    MySQL 会根据字段名来匹配对应的值,即使它与表格定义的顺序不一致

    INSERT INTO fruit (type, season, price, date, name)
    VALUES ('浆果', '夏', 22.3, '2022-08-15','蓝莓');
    
    1
    2
  2. 插入部分字段的情况

    如果你只想插入部分字段的数据,你可以在 INSERT 命令中仅指定这些字段,并相应地提供值。未指定的字段将使用它们的默认值(如果定义了默认值)或者为 NULL(如果允许 NULL 值)。

    INSERT INTO fruit (type, price, date)
    VALUES ('浆果', 22.3, '2022-08-15');
    
    1
    2

# replace 语句

在MySQL中,如果带插入的数据行中包含与已有数据行相同的主键值(primary key)或unique列值,那么insert语句将无法插入成功,而只能使用replace语句才能插入成功。

如果只是为了修改数据,我们并不建议使用replace语句这种方式,而是推荐使用后面介绍的update语句。

REPLACE INTO fruit (type, season, price, date, name)
VALUES ('浆果', '夏', 22.3, '2022-08-15','蓝莓');
1
2

# 更新数据:update

在MySQL中,我们可以使用update语句来对一张表进行更新数据。所谓的更新数据,也就是对已有的数据进行修改。

update 表名
set 列名 = 值;
1
2

如果没有 where 子句,update语句会作用于整列中的所有记录

update fruit
set date = '2022-08-16';
where name = '蓝莓'
1
2
3

# 删除数据:delete

在MySQL中,我们可以使用delete语句来删除一张表中的部分或全部数据。

delete from 表名
where 条件;
1
2

如果想要一次性删除一个表中的所有数据,我们其实有两种方式可以实现。

-- 方式1
-- 如果不指定 WHERE 子句,DELETE 会删除表中的所有行
delete from fruit;

-- 方式2
truncate table fruit;
1
2
3
4
5
6

# 性能

  • DELETE:逐行删除数据,并且在每删除一行时都会记录日志。如果表中有触发器(Triggers),它们会在每删除一行时被触发。因此,DELETE 可能会比较慢,尤其是在有大量数据的大表上。
  • TRUNCATE:是一种DDL(数据定义语言)操作,而不是DML(数据操作语言)操作。它直接释放数据页并重置表,通常比 DELETE 快得多,因为它不记录每一行的删除操作,并且不会触发触发器。

# 事务处理

  • DELETE:可以在事务中使用。你可以使用 COMMIT 和 ROLLBACK 来控制事务的提交和回滚。
  • TRUNCATE:在大多数存储引擎(如 InnoDB)中,TRUNCATE 也是一个隐式提交操作,即执行 TRUNCATE 后,之前的事务会自动提交,并且不能回滚。
编辑 (opens new window)
上次更新: 2025/3/12 17:54:26
内置函数
表的操作

← 内置函数 表的操作→

最近更新
01
IoC 解决了什么痛点问题?
03-10
02
如何调试 Nest 项目
03-10
03
Provider注入对象
03-10
更多文章>
Copyright © 2019-2025 Study | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式