程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • MySQL速查

    • MySQL 数据库操作
    • MySQL 数据表操作
    • MySQL 数据列 (字段) 操作
    • MySQL 数据增删改操作
      • 1. 添加数据
      • 2. 删除数据
      • 3. 删除全部记录
      • 4. 删除表并创建一个同名的空表(效率更高)
      • 5. 修改数据
      • 6. 批量插入数据
      • 7. 插入或更新(防止重复插入)
      • 8. 删除重复数据
      • 9. 条件删除数据(带子查询)
    • MySQL 单表查询
    • MySQL 多表查询
    • MySQL 数据字段设计
    • MySQL 特殊字段的设计
  • MySQL速查
  • MySQL速查
scholar
2024-08-20
目录

MySQL 数据增删改操作

# MySQL 数据增删改操作

# 1. 添加数据

-- 使用 `insert into 表名(列名1, 列名2, ...) values (...), (...), ...;` 向表中插入数据
insert into 表名 (列名1, 列名2, 列名3) 
values 
    (值1, 值2, 值3), 
    (值4, 值5, 值6);

-- 输出示例
Query OK, 2 rows affected (0.01 sec)

-- 解释:
-- 该命令用于向表中插入数据,可以一次插入多条记录。
-- 列名列表指定了插入数据对应的字段,`values` 后的每组括号表示一条记录。
-- 如果不指定列名,默认按表结构中的字段顺序插入数据,但推荐明确指定列名以避免错误。
1
2
3
4
5
6
7
8
9
10
11
12
13

# 2. 删除数据

-- 使用 `delete from 表名 where 条件;` 删除符合条件的记录
delete from 表名 where 条件;

-- 输出示例
Query OK, 1 row affected (0.01 sec)

-- 解释:
-- 该命令会删除符合条件的记录,如果不加 `where` 条件将删除所有记录(需谨慎)。
-- `delete` 操作会影响原有数据,删除的数据不可恢复,建议操作前做好备份。
1
2
3
4
5
6
7
8
9

# 3. 删除全部记录

-- 使用 `delete from 表名;` 删除表中的所有记录
delete from 表名;

-- 输出示例
Query OK, X rows affected (0.01 sec) -- X 表示被删除的记录数

-- 解释:
-- 该命令会删除表中的所有记录,但保留表结构和索引。与 `truncate` 不同,`delete` 会逐行删除并记录操作日志。
-- 删除大量数据时,`delete` 的性能不如 `truncate`,但适用于需要触发触发器或保留自增主键计数的场景。
1
2
3
4
5
6
7
8
9

# 4. 删除表并创建一个同名的空表(效率更高)

-- 使用 `truncate table 表名;` 清空表中的所有数据并重置自增主键
truncate table 表名;

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- `truncate` 会快速删除所有记录,同时重置自增主键计数。与 `delete` 不同,`truncate` 不会触发触发器,也不会记录逐行删除日志。
-- 该操作与重新创建一个同名空表效果相同,但执行效率更高,适用于需要清空大量数据的场景。
1
2
3
4
5
6
7
8
9

# 5. 修改数据

-- 使用 `update 表名 set 字段名1=值1, 字段名2=值2 where 条件;` 更新指定记录的数据
update 表名 
set 字段名1 = 新值1, 
    字段名2 = 新值2 
where 条件;

-- 输出示例
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

-- 解释:
-- `update` 命令用于修改符合条件的记录的字段值。`set` 子句指定要更新的字段及其新值,`where` 条件用于筛选要修改的记录。
-- 如果 `where` 条件缺失,将更新表中的所有记录(需谨慎)。
1
2
3
4
5
6
7
8
9
10
11
12
13

# 6. 批量插入数据

-- 使用 `insert into 表名 (列名1, 列名2, ...) values (...), (...), ...;` 一次性插入多条记录
insert into 表名 (列名1, 列名2, 列名3) 
values 
    (值1, 值2, 值3), 
    (值4, 值5, 值6),
    (值7, 值8, 值9);

-- 输出示例
Query OK, 3 rows affected (0.01 sec)

-- 解释:
-- 该命令可以一次性插入多条记录,减少数据库的交互次数,提高插入效率。
-- 如果表有自增主键,MySQL 会为每条记录自动分配自增 ID。
1
2
3
4
5
6
7
8
9
10
11
12
13

# 7. 插入或更新(防止重复插入)

-- 使用 `insert into ... on duplicate key update` 在插入数据时如果存在冲突则更新
insert into 表名 (列名1, 列名2) 
values (值1, 值2)
on duplicate key update 列名2 = 新值2;

-- 输出示例
Query OK, 2 rows affected (0.01 sec)

-- 解释:
-- 当插入的数据违反唯一性约束(如主键或唯一索引)时,MySQL 将执行 `on duplicate key update` 子句中的更新操作。
-- 该命令常用于避免重复插入数据的场景,既可以插入新数据,也可以更新已有数据。
1
2
3
4
5
6
7
8
9
10
11

# 8. 删除重复数据

-- 使用 `delete from 表名 where 条件 and 子查询;` 删除重复记录
delete from 表名 
where 条件 and id not in (
    select min(id) 
    from 表名 
    group by 重复字段1, 重复字段2
);

-- 输出示例
Query OK, X rows affected (0.01 sec)

-- 解释:
-- 该命令用于删除表中的重复记录,只保留每组重复数据中的一条(通常按 ID 保留最小的记录)。
-- 具体删除逻辑可以根据实际需求调整,如根据其他字段判断重复。
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 9. 条件删除数据(带子查询)

-- 使用 `delete from 表名 where 字段 in (子查询);` 删除符合子查询结果的数据
delete from 表名 
where 字段名 in (
    select 字段名 
    from 另一个表 
    where 条件
);

-- 输出示例
Query OK, X rows affected (0.02 sec)

-- 解释:
-- 该命令结合子查询,删除符合复杂条件的数据,例如根据其他表的结果来筛选需要删除的记录。
-- 使用子查询时,MySQL 会先执行子查询并缓存结果,然后再执行删除操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
MySQL 数据列 (字段) 操作
MySQL 单表查询

← MySQL 数据列 (字段) 操作 MySQL 单表查询→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式