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

MySQL增删改查(CRUD)操作详解与实战指南

目录

一、引言

二、CRUD基础操作

1. 数据插入(Create)

全列插入与指定列插入

冲突处理:插入否则更新

替换操作

2. 数据查询(Retrieve)

基础查询

条件筛选(WHERE)

排序与分页

3. 数据更新(Update)

4. 数据删除(Delete)

三、聚合函数与分组查询

1. 常用聚合函数

示例

2. 分组查询(GROUP BY)

四、实战应用场景

1. 去重与数据迁移

2. 分页查询优化

3. 处理复杂条件

五、面试重点:SQL执行顺序

六、总结与最佳实践


一、引言

MySQL作为最流行的关系型数据库之一,其核心操作CRUD(Create, Retrieve, Update, Delete)是每个开发者必须掌握的基础技能。本文将系统性地讲解MySQL的增删改查操作,涵盖基础语法、高级技巧和实战案例,帮助读者构建完整的知识体系。

二、CRUD基础操作

1. 数据插入(Create)

全列插入与指定列插入
-- 全列插入(需按表结构顺序填写所有字段)
INSERT INTO students VALUES (100, 10000, '唐三藏', NULL);

-- 指定列插入(可省略自增主键或允许为NULL的字段)
INSERT INTO students (sn, name) VALUES (20001, '曹孟德');
冲突处理:插入否则更新

当主键或唯一键冲突时,使用 ON DUPLICATE KEY UPDATE 同步更新数据:

INSERT INTO students (id, sn, name) VALUES (100, 10010, '唐大师')
ON DUPLICATE KEY UPDATE sn = 10010, name = '唐大师';
替换操作

REPLACE 在冲突时先删除再插入:

REPLACE INTO students (sn, name) VALUES (20001, '曹阿晴');

2. 数据查询(Retrieve)

基础查询
-- 全列查询(谨慎使用,可能影响性能)
SELECT * FROM exam_result;

-- 指定列查询
SELECT name, math FROM exam_result;

-- 别名与表达式
SELECT name, chinese + math + english AS 总分 FROM exam_result;
条件筛选(WHERE)
-- 比较运算符
SELECT name, english FROM exam_result WHERE english < 60;

-- 范围查询
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;

-- 模糊匹配
SELECT name FROM exam_result WHERE name LIKE '孙%';  -- 姓孙的同学
SELECT name FROM exam_result WHERE name LIKE '孙_';  -- 姓孙且名字为两字的同学
排序与分页
-- 按总分降序排列
SELECT name, chinese + math + english 总分 
FROM exam_result 
ORDER BY 总分 DESC;

-- 分页查询(每页3条,查看第2页)
SELECT id, name 
FROM exam_result 
ORDER BY id 
LIMIT 3 OFFSET 3;

3. 数据更新(Update)

-- 单字段更新
UPDATE exam_result SET math = 80 WHERE name = '孙悟空';

-- 多字段更新
UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';

-- 表达式更新(为总分倒数前三的同学数学加30分)
UPDATE exam_result SET math = math + 30 
ORDER BY chinese + math + english 
LIMIT 3;

4. 数据删除(Delete)

-- 删除特定记录
DELETE FROM exam_result WHERE name = '孙悟空';

-- 清空表(自增ID保留)
DELETE FROM for_delete;

-- 截断表(自增ID重置)
TRUNCATE TABLE for_truncate;

三、聚合函数与分组查询

1. 常用聚合函数

函数说明
COUNT()统计行数
SUM()求和
AVG()求平均值
MAX()最大值
MIN()最小值
示例
-- 统计班级人数
SELECT COUNT(*) FROM students;

-- 统计数学成绩种类数
SELECT COUNT(DISTINCT math) FROM exam_result;

-- 计算平均总分
SELECT AVG(chinese + math + english) AS 平均总分 FROM exam_result;

2. 分组查询(GROUP BY)

-- 统计各部门的平均工资与最高工资
SELECT deptno, AVG(sal), MAX(sal) 
FROM emp 
GROUP BY deptno;

-- 过滤分组结果(HAVING)
SELECT deptno, AVG(sal) AS avg_sal 
FROM emp 
GROUP BY deptno 
HAVING avg_sal < 2000;

四、实战应用场景

1. 去重与数据迁移

-- 创建新表并插入去重数据
CREATE TABLE no_duplicate_table LIKE duplicate_table;
INSERT INTO no_duplicate_table SELECT DISTINCT * FROM duplicate_table;

-- 重命名表实现原子操作
RENAME TABLE duplicate_table TO old_duplicate_table,
no_duplicate_table TO duplicate_table;

2. 分页查询优化

-- 使用LIMIT和OFFSET实现分页
SELECT * FROM large_table 
ORDER BY id 
LIMIT 10 OFFSET 20;  -- 第3页,每页10条

3. 处理复杂条件

-- 查询姓孙或总成绩>200且语文<数学的同学
SELECT name, chinese, math, english 
FROM exam_result 
WHERE name LIKE '孙%' OR (chinese + math + english > 200 AND chinese < math);

五、面试重点:SQL执行顺序

SQL关键字执行顺序决定了查询逻辑的优先级:
FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT


六、总结与最佳实践

  1. 避免全列查询:使用 SELECT * 可能导致性能问题,明确指定所需字段。

  2. 谨慎更新/删除:操作前务必确认WHERE条件,可先通过SELECT验证。

  3. 索引优化:频繁查询的字段建议添加索引,但需权衡写入性能。

  4. 事务处理:批量操作时使用事务,确保数据一致性。

通过本文的学习,相信你已经掌握了MySQL的核心操作。建议结合实战题目(如LeetCode SQL题库)进一步巩固技能,提升解决复杂问题的能力。

相关文章:

  • Java EE(17)——网络原理——IP数据报结构IP协议解析(简述)
  • TabularDataset
  • 蓝桥杯备考----》完全背包模板
  • HarmonyOs学习 实验四:开发一个登录界面
  • Electron 系统托盘与屏幕捕捉深度解析:从基础到企业级实践
  • 【Linux】网络概念
  • STM32F103_LL库+寄存器学习笔记13 - 梳理外设CAN与如何发送CAN报文(串行发送)
  • [Vue2]侦听器watch(监视器)
  • Android JobScheduler调度任务面试题及参考答案
  • 01_现代C++特殊成员函数
  • Android 10上如何查看GPU占用率 安卓手机怎么看gpu频率
  • 介绍一下JVM内存结构面试回答(后续会继续补充)
  • Netty源码—10.Netty工具之时间轮
  • QT 动态布局实现(待完善)
  • 【docker】Dockerfile中ENTRYPOINT和CMD区别理解
  • c语言strcat和strlen的注意事项
  • 实现分布式锁的方案与实战应用案例
  • PP-ChatOCRv3新升级:多页PDF信息抽取支持自定义提示词工程,拓展大语言模型功能边界
  • 【深度学习新浪潮】什么是推理模型?
  • spring boot中“编程式事务”与“声明式事务”对比
  • 自己可以给公司做网站吗/百度开户推广
  • 网站垃圾代码检查工具/经典软文
  • 网站建设跟网站开发有什么区别吗/seo在线教学
  • 给一瓶水做网站/沈阳沈河seo网站排名优化
  • 海林建设局网站/杭州优化seo公司
  • 查找网站建设历史记录/365优化大师软件下载